当前位置: 首页 > 工具软件 > gin-restful > 使用案例 >

使用Go和Gin开发Restful API

后树
2023-12-01

使用Go和Gin开发Restful API

学习笔记自存,希望也能对您有所帮助,欢迎大神批评指教。

官方文档:Tutorial: Developing a RESTful API with Go and Gin - The Go Programming Language

简介

  • Gin是一个golang的微框架,封装比较优雅,API友好,源码注释比较明确,具有快速灵活,容错方便等特点
  • 对于golang而言,web框架的依赖要远比Python,Java之类的要小。自身的net/http足够简单,性能也非常不错
  • 借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范

本文主要内容以Go官方文档为主,抽取出使用Gin框架编写API的最简单的基础方法。

使用Gin开发Restful风格的API

什么是RestfulAPI?

简单的说,就是利用HTTP中的四种不同的请求方式表示对相同资源的不同操作

  • GET用来获取资源
  • POST用来新建资源(也可以用于更新资源)
  • PUT用来更新资源
  • DELETE用来删除资源

代码实现RESTful API

文档中的例子是使用Gin编写三个API完成对条目(爵士唱片)的查询和条目增加操作。

  1. GET “/albums” 获取所有条目
  2. GET “/albums/:id” 获取指定条目
  3. POST “/albums” 发送POST请求携带JSON数据,添加条目

代码逻辑比较简单,因此不再重复具体代码,重点在于理解使用Gin写API的过程。总结为以下三点:

  1. 设计结构体存储资源(通过HTTP请求增删改查的对象)
  2. 编写实现业务逻辑的处理函数
  3. 将(URI + 请求方式)与处理函数绑定

下面只利用其中一个API说明该过程。

发送GET /albums 返回所有条目

  1. 定义结构体
// 定义结构体
type album struct {
  ID     string  `json:"id"`  // `json:"xxx"`指明了该属性在json中序列化后的字段名,若未指定序列化时使用结构体中的属性名
	Title  string  `json:"title"`
	Artist string  `json:"artist"`
	Price  float64 `json:"price"`
}


// 声明并初始化变量(资源)
var albums = []album{
	{ID: "1", Title: "Blue Train", Artist: "John Coltrane", Price: 56.99},
	{ID: "2", Title: "Jeru", Artist: "Gerry Mulligan", Price: 17.99},
	{ID: "3", Title: "Sarah Vaughan and Clifford Brown", Artist: "Sarah Vaughan", Price: 39.99},
}
  1. 处理函数
// 返回所有条目序列化成JSON
func getAlbums(c *gin.Context) {
	c.IndentedJSON(http.StatusOK, albums)
}
  1. 绑定
func main() {
	router := gin.Default()
  router.GET("/albums", getAlbums)  // {URI : "/albums" , Method : "Get"} bind to function getAlbums
  
	router.Run("localhost:8080")
}

总结

简单的总结了一下使用Gin开发RESTful API的基本套路。如果感觉这种偏应用层面的东西在初始学习中简单了解一下概念和最简单的使用即可,真要加深理解还得是在真实项目开发中学习。到时候用到了再去查文档、博客更高效。

 类似资料: