GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)相关的知识,希望对你有一定的参考价值。

参考技术A 当客户端在 发出POST请求时/albums,您希望将请求正文中描述的专辑添加到现有专辑数据中。

为此,您将编写以下内容:

1、编写代码

a.添加代码以将专辑数据添加到专辑列表。

在此代码中:

1)用于Context.BindJSON 将请求正文绑定到newAlbum。

2) album将从 JSON 初始化的结构附加到albums 切片。

3)向响应添加201状态代码,以及表示您添加的专辑的 JSON。

b.更改您的main函数,使其包含该router.POST函数,如下所示。

在此代码中:

1)将路径中的POST方法与 /albumspostAlbums函数相关联。

使用 Gin,您可以将处理程序与 HTTP 方法和路径组合相关联。这样,您可以根据客户端使用的方法将发送到单个路径的请求单独路由。

a.如果服务器从上一节开始仍在运行,请停止它。

b.从包含 main.go 的目录中的命令行,运行代码。

c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求。

该命令应显示添加专辑的标题和 JSON。

d.与上一节一样,使用curl检索完整的专辑列表,您可以使用它来确认添加了新专辑。

该命令应显示专辑列表。

当客户端向 发出请求时GET /albums/[id],您希望返回 ID 与id路径参数匹配的专辑。

为此,您将:

a.在您在上一节中添加的函数下方postAlbums,粘贴以下代码以检索特定专辑。

此getAlbumByID函数将提取请求路径中的 ID,然后找到匹配的专辑。

在此代码中:

(1)Context.Param用于从 URL 中检索id路径参数。当您将此处理程序映射到路径时,您将在路径中包含参数的占位符。

(2)循环album切片中的结构,寻找其ID 字段值与id参数值匹配的结构。如果找到,则将该album结构序列化为 JSON,并将其作为带有200 OK HTTP 代码的响应返回。

如上所述,实际使用中的服务可能会使用数据库查询来执行此查找。

(3)如果找不到专辑,则返回 HTTP 404错误。

b.最后,更改您的main,使其包含对router.GET的新调用,路径现在为/albums/:id ,如以下示例所示。

在此代码中:

(1)将/albums/:id路径与getAlbumByID功能相关联。在 Gin 中,路径中项目前面的冒号表示该项目是路径参数。

a.如果服务器从上一节开始仍在运行,请停止它。

b.在包含 main.go 的目录中的命令行中,运行代码以启动服务器。

c.从不同的命令行窗口,用于curl向正在运行的 Web 服务发出请求。

该命令应显示您使用其 ID 的专辑的 JSON。如果找不到专辑,您将收到带有错误消息的 JSON。

恭喜!您刚刚使用 Go 和 Gin 编写了一个简单的 RESTful Web 服务。

本节包含您使用本教程构建的应用程序的代码。

Go语言系列第三方框架和库——GIN:GIN介绍

1、Gin 是什么?

  Gin 是一个用 Go (Golang) 编写的 HTTP web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架, 由于 httprouter,速度提高了近 40 倍。如果你需要极好的性能,使用 Gin 吧。

2、为什么要用Gin

  在 Web 开发中,开发人员经常需要使用特定框架来进行开发与维护,而开源框架 Gin 是 Go 语言中最流行的 Web 框架,其 API 调用方便,性能优越,在 Web 开发中占有非常重要的位置。
  基于 Gin 框架进行 Web 开发,既可以享受到框架封装后带来的好处,又因为 Gin 框架是轻量级框架,可以非常方便地根据实际需要进行二次开发与整合,例如加入日志、链路追踪、流量控制等功能,因此成为很多公司进行 Web 开发时选型的首选。
  像 Bilibili 开源的一套 Go 微服务框架 Kratos 就采用 Gin 框架进行了二次开发,加入日志、Bug 追踪、 gRPC 等功能,其自家站点也采用类似的架构进行开发。在 Go 语言中,Gin 框架在同类框架中无论是性能还是流行程度都非常领先。

3、Gin的项目地址

首页: https://github.com/gin-gonic
GIN:https://github.com/gin-gonic/gin
实例:https://github.com/gin-gonic/examples
中文文档:https://gin-gonic.com/zh-cn/docs/

4、还有哪些Web框架
Beego、Buffalo、Echo、Iris、Revel

受欢迎指数

技术图片

 

学习曲线

技术图片

 

框架对比

技术图片

以上是关于GO语言(十三):使用 Go 和 Gin 开发 RESTful API(下)的主要内容,如果未能解决你的问题,请参考以下文章

Go Gin 系列十三:优化应用结构和实现Redis缓存

Go语言开发(十三)Go语言常用标准库三

Go语言框架:Beego vs Gin 的区别

GOGin

Go+Vue.js快速搭建Web应用

gin go并发案例