学习思维导图
这一期讲解Gin框架的学习思路,分为五大块:
1.入门篇
2.提高篇
3.进阶篇
4.精通篇
5.实战篇(前后端分离)
入门篇
框架介绍
Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,已经发布了1.0版本。具有快速灵活,容错方便等特点。其实对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。
GET请求
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.GET("/Get",func(context *gin.Context) {
context.JSON(200,gin.H{
"message":"get",
})
})
r.Run()
}
POST请求
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.POST("/Post",func(context *gin.Context) {
context.JSON(200,gin.H{
"message":"post",
})
})
r.Run()
}
提高篇
重定向
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.GET("/Get", func(c *gin.Context) {
c.Redirect(http.StatusMovedPermanently,"http://www.baidu.com")
})
r.GET("/Get2", func(c *gin.Context) {
c.Request.URL.Path = "/test"
r.HandleContext(c)
r.GET("/test2", func(c *gin.Context) {
c.JSON(http.StatusOK,gin.H{
"hello":"world"
})
})
r.Run()
}
返回第三方获取的数据
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.GET("/test", func(c *gin.Context) {
response, err := http.Get("https://baidu.com")
if err != nil || response.StatusCode != http.StatusOK {
c.Status(http.StatusServiceUnavailable)
return
}
reader := response.Body
contentLength := response.ContentLength
contentType := response.Header.Get("Content-Type")
extraHeaders := map[string]string{
}
c.DataFromReader(http.StatusOK, contentLength, contentType, reader, extraHeaders)
})
r.Run()
}
后记
喜欢的话可以三连,后续继续更新其他内容,帮忙推一推,感谢观看!