一直想学一些新的东西,自从接触了 Go 语言,然后学了一些基本语法,但是基本上还是停留在知道这么个语言的阶段,没有深入的了解过.
所以就选了一个文档比较齐全的 Gin 来写我的第一个 webServer 项目.这只是一个 Demo ,写这个日志是为了记录自己的学习历程.激励下自己吧.
搭建Web 服务器少不了要写 api 首先从最简单的 GET POST 开始.
首先要初始化一个路由
func main() {
router := gin.Default()//初始化路由
router.Run(":8080") // listen and GO on 0.0.0.0:8080
}
这个最基本的网络请求在 gin 几行代码就可以搞定
router.GET("/user/:name/:action", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
message := name + " is " + action
c.String(http.StatusOK, message)
})
client 使用方式如下图
router.GET("/welcome", func(c *gin.Context) {
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")
c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
})
client 使用方式如下图
router.POST("/form_post", func(c *gin.Context) {
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous")
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"nick": nick,
})
})
一样只需要几行代码
router.POST("/post", func(c *gin.Context) {
id := c.Query("postid")
page := c.DefaultQuery("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")
fmt.Printf("id: %s; page: %s; name: %s; message: %s", id, page, name, message)
c.JSON(200, gin.H{
"status": "posted",
"id": id,
"page":page,
"name":name,
"message":message,
})
})
client 使用方式如下图
type postForm1 struct {
UserId string `form:"userid" binding:"required"`
Page string `form:"page" binding:"required"`
}
router.POST("/post1", func(c *gin.Context) {
var form postForm1
if c.Bind(&form) == nil{
c.JSON(200,gin.H{
"status":200,
"id":form.UserId,
"page":form.Page,
})
}
fmt.Printf("id: %s ", form.UserId)
})
client 使用方式如下图
作者:Brasbug
微信关注:Crime_Sence (我在案发现场)
本文出处:http://blog.flywithme.top/2016/06/30/Go-gin01/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。