前后端分离开发之后端开发01-gin配置与第一个程序

 

 

gin配置

1. 创建项目并初始化

创建项目

初始化并生成go.mod

go mod init just.com/ginStudy01

此处的just.com一般指公司名,,可以自行定义,/ginStudy01指项目名。

2. 安装gin依赖

go get -u github.com/gin-gonic/gin

安装后会生成如上图的依赖。但此时main.go文件里还不能正常导包。需要增加以下操作

3. 测试样例测试

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
}

 运行

go run main.go

 

从浏览器中输入 localhost:8080/ping

代码解读

r := gin.Default()

此处生成了一个实例,该实例为WSGI应用程序 

WSGI应用程序

此处参考廖雪峰老师的解析

WSGI

简而言之,WSGI(Web Server Gateway Interface)主要目的是写动态HTML的过程中,避免接触到TCP连接、HTTP原始请求和响应格式。于是通过一个统一的接口来让后端程序专心写web业务。

 

接下来看第二段

r.GET("/ping", func(c *gin.Context) {
	c.JSON(200, gin.H{
		"message": "pong",
	})
})

此处的/ping为路径,你需要在网页中定位到/ping这个页面才能显示以下信息。

 r.Get("/", ...)声明了一个路由,告诉gin什么样的URL能触发传入的函数,这个函数返回我们想要显示在用户浏览器中的信息。

而每个HTTP请求都会包含一个Context对象,Context贯穿整个HTTP请求,包含了所有的上下文信息。

根据源码中的理解,Context是gin最重要的部分,他允许我们在中间件中传递变量、管理流、在请求中验证JSON和给与JSON响应。

gin.H{}

// gin.H定义
// H is a shortcut for map[string]interface{}
type H map[string]interface{}

 

运行 

r.Run() // listen and serve on 0.0.0.0:8080

这里用Run()函数应用在本地服务器上,默认监听端口是8080, 可以传入参数设置端口,例如r.Run(":9999")就运行在9999端口

路由(Route)

gin封装了http库,提供了GET、POST、PUT、PATCH、DELETE和OPTIONS这些请求方式。然后他通过router.method()来绑定路由。

这些方法的使用如同上面main函数里的GET方法一样,

先传入一个relativePath,如:“/ping”, 再传入一个handlers函数,如

func(c *gin.Context) {
    c.JSON(200, gin.H{
        "message": "pong",
    }

响应内容格式

留意到这里的c.JSON(),这里返回了一个响应,响应的状态码是200,响应的内容是一个JSON格式。

响应内容格式有以下几种:JSON、XML、YAML、String、HTML。

状态码

gin给不同的状态码定义了不同的变量,例如200也可以写成StatusOK,500可以写成StatusInternalServerError,404可以写成StatusNotFound。

在调用时,我们可以直接调用http.StatusOK来使用

router.GET("/json", func(c *gin.Context) {
    c.JSON(http.StatusOK, gin.H{"message": "not found"})
    //等价于
    //c.JSON(200, gin.H{"message": "not found"})
})

 


版权声明:本文为weixin_42835209原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。