Goalng web开发
net/httpRESTful
githubwebstar
beggogin
创建项目 安装依赖
mkdir gin-demo
// add to env var
cd gin-demo
go get github.com/gin-gonic/gin
cd src
touch main.go
Hello World
package main
import "github.com/gin-gonic/gin"
func main() {
r := gin.Default()
r.GET("/ping", func(c *gin.Context) {
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run() // listen and serve on 0.0.0.0:8080
}
pong
分析一下这段代码,首先导入gin包,获取一个引擎实例,然后做路由分发,监听端口。
POST方法
r.POST("/post",func(c *gin.Context){
c.JSON(200,gin.H{
"message":"ok",
})
})
postman
{
"message": "ok"
}
QueryString查询字符串
htttp://www.example.com/api/user?id=1
要想获取id,我们可以这样来做:
r.GET("/user",func(c *gin.Context){
id := c.Query("id")
c.JSON(200,gin.H {
"id":id,
})
})
结果为:
{
"id": "1"
}
面向资源的请求
http://www.example.com/api/users/1
r.GET("/users/:id",func(c *gin.Context){
id := c.Param("id")
c.JSON(200,gin.H{
"id":id,
})
})
结果为:
{
"id": "1"
}
form-data x-www-form-urlencoded
r.POST("/form",func(c *gin.Context) {
id := c.PostForm("id")
name := c.DefaultPostForm("name","unknow")
c.JSON(200,gin.H{
"id":id,
"name":name,
})
})
返回:
{
"id": "1",
"name": "unknow"
}
post json
r.POST("json",func(c *gin.Context){
user := new (User)
err := c.BindJSON(user)
if err != nil {
fmt.Println(err)
return
}
c.JSON(200,gin.H{
"name":user.Name,
"id":user.Id,
})
c.BindJSON(),将为我们返回结构体