【Gin-API系列】需求设计和功能规划(一)
2020-12-26 03:27
标签:安全 日志文件 配置文件 watch main rest 脚本 可行性 规范 数据库存储2个模型,每个模型都有一个或多个IP字段,需要通过 Golang Http Api(Restful Api) 返回 IP 信息。 使用 Golang 开发一个 Api Server,支持通过 http 请求返回目标 IP 的部分信息 请求方法 支持 入参 支持多个IP参数同时查询 输出 ip对应的设备信息和负责人信息 案例请求 案例响应 目前 golang 比较常用的 api 框架有 beego,gin,iris,echo,martini 等,在选用之前我们可以花10分钟在知乎、Github上调研下各框架的优劣性,其中可以选取 Github Star 数量,百度搜索热度等作为参考点比较。 本次项目我们采用轻量级的 Gin 作为开发框架,特点是简单易用,高性能、易扩展,在中小型项目应用较多。 Gin 在 golang 中的地位就像是 python 中的 flask。 新建 golang 项目, Gin-IPs. 新建 src/main.go 启动: 验证: 结果: Windows 编码:如果在 windows 出现乱码,则可以在 cmd 终端运行 通过简单的 接下来,我们就可以有计划地推进 Gin-Ips 开发了。 请访问 Gin-IPs 或者搜索 Gin-IPs 【Gin-API系列】需求设计和功能规划(一) 标签:安全 日志文件 配置文件 watch main rest 脚本 可行性 规范 原文地址:https://www.cnblogs.com/lxmhhy/p/13385475.html场景需求
ID
主机名
IP
内存大小
磁盘大小
类型
负责人
H001
10-1-162-18
10.1.162.18
32G
2T
物理机
小林
H002
10-1-162-19
10.1.162.19
32G
2T
物理机
小黄
...
ID
设备名
管理IP
虚IP
带外IP
厂家
负责人
S001
上海集群交换机
10.2.32.11
10.2.20.1,10.2.20.13,10.1.162.18
10.3.32.11
华为
老马
S002
广州集群交换机
10.2.32.13
10.2.21.5,10.2.21.23,10.2.21.40
10.3.32.13
思科
老马
...
需求详情
GET/POST
请求
GET /test/search_ip?ip="10.1.162.18,10.1.162.19"
POST /test/search_ip -d ‘{"ip":"10.1.162.18,10.1.162.19"}
[
{"10.1.162.18":{
"_match": "ip", // 匹配到的字段名称
"model":"服务器", // 设备类型
"ip":"10.1.162.18", // ip
"owner":"小林", // 负责人
"hostname": "10-1-162-18", // 主机名
}
},
{"10.1.162.19":{
"_match": "ip",
"model":"服务器",
"ip":"10.1.162.19",
"owner":"小黄",
"hostname": "10-1-162-10",
}
},
{"10.1.162.18":{
"_match": "vip", // 匹配到的字段名称
"model":"交换机", // 设备类型
"ip":"10.2.32.11", // 管理IP
"vip":"10.2.20.1,10.2.20.13,10.1.162.18", // 虚IP
"console_ip":"10.3.32.11", // 带外IP
"owner":"老马", // 负责人
"name":"上海集群交换机", // 设备名
}
}
]
初步操作
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"os"
)
func main() {
route := gin.Default()
route.GET("/", func(c *gin.Context) {
c.JSON(200, gin.H{
"10.1.162.18": map[string]string{"model": "主机", "IP": "10.1.162.18"},
})
})
if err := route.Run("127.0.0.1:8080"); err != nil {
fmt.Println(err)
os.Exit(1)
}
}
go run src/main.go
curl http://127.0.0.1:8080/
{"10.1.162.18":{"IP":"10.1.162.18","model":"主机"}}
chcp 65001
设置 utf8
编码功能规划
main
函数验证,我们可以确认该框架基本符合我们的需求,接下来是进行 Gin-IPs 的功能和大概的目录规划,捋清整个项目的思路。
* 路由绑定 // 快捷、自动生成路由 URI
* 请求参数检查 // 绑定请求参数并检查
* 响应规范 // 统一、规范的返回信息
* 路由中间件
* 签名验证 // API 安全认证
* 日志 // 请求日志
* 异常捕捉 // 请求异常捕捉
* 链路跟踪 // 请求链路跟踪
* 数据库 // 数据库操作
* 异步请求 // 耗时操作快速响应
* 部署 // 上线部署
* 监控 // 服务监控
Gin-IPs/
├── bin // 二进制文件、启动/停止脚本
├── conf // 配置文件目录
├── logs // 日志文件目录
├── src // 代码文件目录
│?? ├── configure // 配置文件解析
│?? ├── controller // Api 控制器,启动/重载 gin server
│?? ├── dao // 数据库操作
│?? ├── exception // 异常定义
│?? ├── main.go // 主函数入口
│?? ├── route // 路由目录,包括路由绑定、中间件
│?? ├── service // 具体的业务处理逻辑
│?? ├── utils // 工具函数集合
│?? └── watcher // 监控上报
└── test // 测试目录
Github 代码
文章标题:【Gin-API系列】需求设计和功能规划(一)
文章链接:http://soscw.com/index.php/essay/38257.html