Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点
对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http
足够简单,性能也非常不错
借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范
要安装 Gin 软件包,需要先安装 Go 并设置 Go 工作区。
1.下载并安装 gin:
$ go get -u github.com/gin-gonic/gin
2.将 gin 引入到代码中:
import "github.com/gin-gonic/gin"
3.(可选)如果使用诸如 http.StatusOK
之类的常量,则需要引入 net/http
包:
import "net/http"
http.statusok就是状态码200
gin 框架中采用的路由库是基于httprouter做的
地址为:https://github.com/julienschmidt/httprouter
GET(SELECT)
|
从服务器取出资源(一项或多项) |
POST(CREATE)
|
在服务器新建一个资源 |
PUT(UPDATE)
|
在服务器更新资源(客户端提供改变后的完整资源) |
DELETE(DELETE)
|
从服务器删除资源 |
测试我使用的是Apipost7测试工具
route.GET("/",func (c *gin.Context){
c.String(http.StatusOK,"Get获取页面信息")
})
gin.Context,封装了request和response
package main
// (可选)如果使用诸如 http.StatusOK 之类的常量,则需要引入 net/http 包:
import (
"github.com/gin-gonic/gin"
"net/http"
)
func main(){
//创建一个默认路由
route := gin.Default()
//配置路由
// gin.Context,封装了request和response
route.GET("/",func (c *gin.Context){
c.String(http.StatusOK,"Get获取页面信息")
})
route.GET("/ping",func(c *gin.Context){
c.String(200,"可配置多个GET方法来进行测试")
})
route.POST("/add",func (c *gin.Context){
c.String(http.StatusOK,"post方法主要用于在服务器新建一个资源")
})
route.PUT("justice",func(c *gin.Context){
c.String(200,"put方法在服务器更新资源,客户端提供改变后的完整资源")
})
route.DELETE("/delete",func(c *gin.Context){
c.String(200,"从服务器删除资源")
})
//定义监听的端口
route.Run(":8210")
}
r.GET("/",func(ctx *gin.Context) {
ctx.String(http.StatusOK,"%v","返回的字符串")
})
r.GET("/json" ,func(ctx *gin.Context) {
ctx.JSON(http.StatusOK,map[string]interface{}{
"title" :"地区",
"city":"城市",
})
})
//gin.H其实就是封装的是map
r.GET("/json1" ,func(ctx *gin.Context) {
ctx.JSON(http.StatusOK,gin.H{
"title" :"地区",
"city":"城市",
"province":"曹县",
})
})
gin.H其实就是封装的是map
package main
import(
"net/http"
"github.com/gin-gonic/gin"
)
type Structdemo struct{
Name string `json:"name"`
Age int `json:"age"`
Servant string `json:"servant"`
}
func main(){
r.GET("/json2",func(ctx *gin.Context) {
a := &Structdemo{
Name: "卫宫士郎",
Age: 19,
Servant: "sabar",
}
ctx.JSON(http.StatusOK,a)
})
}
r.GET("/json3",func(ctx *gin.Context) {
type People struct{
Name string `json:"name"`
Servant string `json:"servant"`
}
b := &People{
Name: "远坂凛",
Servant: "archer",
}
ctx.JSON(http.StatusOK,b)
})
JSONP的原理是通过动态创建