go 语言如果只是写接口的话,gin 应该就是最后的工具,可是现在的市场是很少人去学习go ,而且很多人感觉这们语言还不是很成熟,其他不然,只是很多人,都没有关注过这门还没有崛起的语言。
go get github.com/gin-gonic/gin
(这个是要在vscode ,或者是goland 的终端运行,直接复制就可,注意要是你的项目目录,下图就是运行目录之后的结果,在外部库可以看到gin 这个文件,还要版本号)
这个目录文件,文件都是要自己创建的,不是像php 的TP框架一样,MVC的目录,连接数据库的文件,配置文件都有,这个下载命令行运行完之后创建这些文件。(go.mod,hell.exe 是命令行生成的,不需要创建)
package main
import (
"github.com/gin-gonic/gin"
"hello/route"
)
func main() {
// 1.创建路由
r := gin.Default()
// 2.绑定路由规则,执行的函数
// gin.Context,封装了request和response
route.Http(r)
// 3.监听端口,默认在8080
// Run("里面不指定端口号默认为8088")
r.Run(":8089")
}
上图的8089 就是你请求的端口,如果go run main.go的时候说接口被占用报错,可以试着换一下那个8089。
package route
import (
"github.com/gin-gonic/gin"
"hello/api/v1"
)
func Http(router *gin.Engine) {
apiRouter := router.Group("/api/v1/")
{
apiRouter.POST("/login", v1.Login)
}
}
这个我设置是路由组,就是路由还有前缀,我习惯一般设置三个,一个是后台,一个是前端,一个是第三方的。这样看路由就知道是那个地方,好区分,当然你也可以不设置。
var form LoginForm
type LoginForm struct {
User string `form:"user" binding:"required"`
Password string `form:"password" binding:"required"`
}
func Logins(c *gin.Context) {
if c.ShouldBind(&form) == nil {
if form.User == "user" && form.Password == "password" {
c.JSON(200, gin.H{"status": "you are logged in"})
} else {
c.JSON(401, gin.H{"status": "unauthorized"})
}
}
}
struct 可以将user,password 这两个字段设置成了,formdata 值 ,如果是raw json 传递,这个就要更改了如下
Number int `json:"number" form:"number"`
好了,到这里就结束了,
go mod init
go mod tidy
go run main.go
在终端打印这些命令之后就可以看到终端编写的api接口了
这个就是我们刚才写的接口地址了。使用怕poatman进行接口测试吧。
这个就是测试结果了,到这里就是我们的接口实现简单的通讯了。注意测试要加上端口号。