Golang笔记-Typora1

Golang - Gin框架

Gin是一个用 Go语言编写的 web框架。它是一个类似于 martini 但拥有更好性能的API框架, 由于使用了 httprouter,速度提高了近40倍。 如果你是性能和高效的追求者, 你会爱上Gin

一、创建工程

我们使用 Goland来完成 Gin框架的实例

Golang笔记-Typora1

创建工程时注意上图箭头标记的地方

  1. 选择go modules
  2. 在environment中添加proxy为 https://goproxy.cn

Golang笔记-Typora1

  • go.mod文件用于保存该工程的依赖信息(引用了xx库...)

二、第一 个Gin 实例

(1)导入 gin 库

import "github.com/gin-gonic/gin"

(2)创建一个路由引擎对象

r := gin.Default()

(3)GET方法

实例化后的路由引擎对象 r 有GET、POST等方法。其中GET方法表示仅当浏览器以GET方式访问relativePath时才作出反应

r.GET("/hello", sayHello)

代码解析:

GET方法共有两个参数,第一个为relativePath,表示当浏览器以GET访问xxx/hello时会...;第二个为function,表示当浏览器访问relativePath时将执行这个函数

(4)GET - 执行函数

func sayHello(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"hello world!",
	})
}

代码解析:

  1. 执行函数必须要有 gin.Context 类型的参数 c
  2. c.Json函数功能:JSON serializes the given struct as JSON into the response body 此函数把给定的结构体类型转换为json格式并返回!一定注意此函数直接返回了第二个参数
  3. 状态码200:表示status OK,即能够成功交互
  4. 补充说明 —— 关于目前的前后端交互

之前的web编程:当收到请求时,后端将整个html文件(本质上是二进制文本)通过html协议传送到前端

现在的web编程:当收到请求时,后端仅仅用html协议传送数据(血肉);网站的框架样式(骨架)则通过其他方式传送

(5)RESTful API:一种风格

简单来说,REST的含义就是客户端与Web服务器之间进行交互的时候,使用 HTTP协议中的 4个请求方法代表不同的动作。

  • GET用来获取资源
  • POST用来新建资源
  • PUT用来更新资源
  • DELETE用来删除资源。

只要API程序遵循了 REST风格,那就可以称其为 RESTful API。目前在前后端分离的架构中,前后端基本都是通过 RESTful API来进行交互。

  1. 不采用restful api

只分 GET 与 POST 请求,通过多个页面来区分不同功能

请求方法 URL 含义
GET /book 查询书籍信息
POST /create_book 创建书籍记录
POST /update_book 更新书籍信息
POST /delete_book 删除书籍信息

例如通过relativePath来实现创建、更新、删除等功能

  1. 采用restful api
请求方法 URL 含义
GET /book 查询书籍信息
POST /book 创建书籍记录
PUT /book 更新书籍信息
DELETE /book 删除书籍信息

在后端中就按照 GET、POST、PUT、DELETE这四种功能来定义四种方法

这就使得我们可以通过不同的方法来访问同一个relativePath来达到不同的效果

  • Gin框架支持 restful api 的开发
	r.GET("/hello", sayHello)
	r.POST("/hello", sayHello)
	r.PUT("/hello", sayHello)
	r.DELETE("/hello", sayHello)

(6)运行 - r.Run( )

package main

import "github.com/gin-gonic/gin"

func sayHello(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"hello world!",
	})
}

func main() {
	r := gin.Default()

	r.GET("/hello", sayHello)

	r.Run()
}

效果:

Golang笔记-Typora1

(7)restful api实现

package main

import "github.com/gin-gonic/gin"

func sayHello_get(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is get method...",
	})
}

func sayHello_post(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is post method...",
	})
}

func sayHello_put(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is put method...",
	})
}

func sayHello_delete(c *gin.Context) {
	c.JSON(200, gin.H{
		"message":"this is delete method...",
	})
}

func main() {
	r := gin.Default()

	r.GET("/hello", sayHello_get)
	r.POST("/hello", sayHello_post)
	r.PUT("/hello", sayHello_put)
	r.DELETE("/hello", sayHello_delete)

	r.Run()
}

这里利用postman进行验证:

  1. getGolang笔记-Typora1

  2. postGolang笔记-Typora1

put与delete类似,不一一列举...

三、Gin渲染

(1)html渲染

上一篇:Gin微服务框架_golang web框架_完整示例Demo


下一篇:Go + cousul 治理微服务(客户端)【五】