网站整站模板,网站优化seo技术,美容整形网站模板,建设银行租房网站开启一个简单的API服务。
golang的教程网上一大堆#xff0c;官网也有非常详细的教程#xff0c;这里不在赘述这些基础语法教程#xff0c;我们意在快速进入项目开发阶段。
golang好用语法教程传送门#xff1a; m.runoob.com/go/ 编写第一个API 前提#xff1a;按照上一…开启一个简单的API服务。
golang的教程网上一大堆官网也有非常详细的教程这里不在赘述这些基础语法教程我们意在快速进入项目开发阶段。
golang好用语法教程传送门 m.runoob.com/go/ 编写第一个API 前提按照上一篇文档初始化项目 1. 下载gin框架一个非常好用的写API的框架使用也很广泛
# 在项目文件下执行go命令下载gin依赖
go mod get github.com/gin-gonic/gin2. 创建API文件夹apis
3. 在apis创建第一个API文档hello.go
4. 实现一个入参为name返回为hello name的api
package apisimport (fmtnet/httpgithub.com/gin-gonic/gingithub.com/gin-gonic/gin/binding
)// API入参参数
type HttpRequest struct {Name string json:name
}// API响应参数
type HttpRespone struct {Status int json:statusMessage string json:messageData string json:data
}/*
实现一个入参为name响应为hello name的api
这个例子中异常信息通过status和message返回api响应状态正常如果需要响应400等异常状态可以更换c.JSON(http.StatusOK, res)中的StatusOK
*/
func Hello(c *gin.Context) {// 声明reqvar req HttpRequest// 声明res并初始化var res HttpRespone{}// 获取api请求参数err : c.ShouldBindBodyWith(req, binding.JSON)// 出现错误则响应错误信息if err ! nil {res.Status 10res.Message 读取请求参数错误c.JSON(http.StatusOK, res)return}// 判断是否入参nameif req.Name {res.Status 20res.Message 参数name为空c.JSON(http.StatusOK, res)return}// 正常响应 hello nameres.Status 0res.Message 成功res.Data fmt.Sprintf(hello %v, req.Name)c.JSON(http.StatusOK, res)
}
5. 在apis文件夹中创建apis.go编写api路由注册和服务启动方法
package apisimport (net/httpgithub.com/gin-gonic/gin
)func StartHttp() {// 设置为发布模式初始化路由之前设置gin.SetMode(gin.ReleaseMode)// gin 默认中间件r : gin.Default()// 访问一个错误路由时返回404r.NoRoute(func(c *gin.Context) {c.JSON(http.StatusNotFound, gin.H{status: 404,message: 404, page not exists!,})})// 注册hello路由r.POST(/hello, Hello)// 启动API服务if err : r.Run(:8080); err ! nil {panic(err)}
}
6. 入口文件main.go引用apis模块
package mainimport prj_aiee/apisfunc main() {apis.StartHttp()
} 完整的项目文件构成如图 7. 启动服务
# 项目文件夹下执行go命令
go run main.go8. 调用api
# 执行curl命令调用API
curl -X POST http://localhost:8080/hello -H content-type: application/json -d {\name\: \aiee\}9. 响应如下 {status:0,message:成功,data:hello aiee} 项目源码GitHub - liyonge-cm/go_prj_aiee: go api 服务 demo