gin框架 | 青训营笔记

59 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天 在昨天的学习中老师教会了我们如何安装gin框架,对goweb的开发有了初步的认识 Gin是一个非常受欢迎的Golang Web框架,在GitHub上已经有65k的星星,它和Golang的语法一样简洁明了,使得初学者得以迅速入门。

1.安装流程如下

1.1 安装jetbrain旗下的goland

1.2 打开goland

image.png 第一行表示项目位置 第二行sdk版本 第三行表示代理 GOPROXY=https://goproxy.cn,direct

1.3 安装gin

项目打开后在终端输入 go get -u github.com/gin-gonic/gin 即可安装成功gin

2.初始gin

2.1 gin hello world

package main

import (
    "github.com/gin-gonic/gin"
    "net/http"
)

func main() {
    router := gin.Default()
    router.GET("/", func(context *gin.Context) {
        context.String(http.StatusOK, "Hello World")
    })
    router.Run(":8080") 
}
  1. router:=gin.Default():这是默认的服务器。使用gin的Default方法创建一个路由Handler
  2. 然后通过Http方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把requestresponse都封装到了gin.Context的上下文环境中。
  3. 最后启动路由的Run方法监听端口。还可以用http.ListenAndServe(":8080", router),或者自定义Http服务器配置。

2.2关于响应

其实主要关注响应json就ok 其他的类似 首先要先创建一个html文件 然后在从go住书写如下代码


router.GET("/json", func(context *gin.Context) {
  context.JSON(http.StatusOK, gin.H{"message": "hey", "status": http.StatusOK})
})
// 结构体转json
router.GET("/moreJSON", func(c *gin.Context) {
  // You also can use a struct
  type Msg struct {
    Name    string `json:"user"`
    Message string
    Number  int
  }
  msg := Msg{"juejin", "hey", 21}
  // 注意 msg.Name 变成了 "user" 字段
  c.JSON(http.StatusOK, msg)
})

2.3关于请求参数

2.3.1关于四大请求

Restful风格指的是网络应用中就是资源定位和资源操作的风格。不是标准也不是协议。

GET:从服务器取出资源(一项或多项)

POST:在服务器新建一个资源

PUT:在服务器更新资源(客户端提供完整资源数据)

PATCH:在服务器更新资源(客户端提供需要修改的资源数据)

DELETE:从服务器删除资源

package main

type ArticleModel struct {
  Title   string `json:"title"`
  Content string `json:"content"`
}

type Response struct {
  Code int    `json:"code"`
  Data any    `json:"data"`
  Msg  string `json:"msg"`
}

// _getList 文章列表页面
func _getList(c *gin.Context) {
  // 包含搜索,分页
  articleList := []ArticleModel{
    {"Go语言入门", "这篇文章是《Go语言入门》"},
    {"python语言入门", "这篇文章是《python语言入门》"},
  }
  c.JSON(200, Response{0, articleList, "成功"})
}

func main() {
  router := gin.Default()
  router.GET("/articles", _getList)       // 文章列表
  router.Run(":80")
}