首页 > 其他分享 >使用 Gin 框架在 GoLang 中构建 API 服务

使用 Gin 框架在 GoLang 中构建 API 服务

时间:2022-09-01 00:23:33浏览次数:96  
标签:控制器 我们 GoLang go API gin 作者 Gin ID

使用 Gin 框架在 GoLang 中构建 API 服务

今天我将向你展示如何在 Go 中构建一个简单的 API 服务。我们的项目演示将是一个简单的作者和他们的图书库项目。

第一步:

首先,我们需要初始化我们的项目。我在用 JetBrains GoLand .

GoLand welcome screen

GoLand New Project

Initialized project

第二步:

现在我们需要安装所需的依赖项。在终端中运行以下命令:

 去获取 -u github.com/gin-gonic/gin

第三步:

初始化 Gin 框架以监听 8080 端口。

 // main.go 包主 进口 (  
 “github.com/gin-gonic/gin”  
 )  
  
 功能主要(){  
 路由器 := gin.Default()  
 router.Run("localhost:8080")  
 }

第四步:

现在我们需要为我们的后端服务创建模型。在这个演示中,我们只需要 Book 和 Author 模型。创建一个名为的新目录 模型 并在该文件夹中创建 作者.gobook.go 文件。

 // 模型/book.go 封装模型  
  
 类型书结构{  
 ID 字符串`json:"id"`  
 名称字符串`json:"name"`  
 } // 模型/作者.go 封装模型  
  
 类型作者结构{  
 ID 字符串`json:"id"`  
 名称字符串`json:"name"`  
 书籍* []书籍`json:“书籍”`  
 }

第五步:

现在我们需要创建一个控制器来从 URL 端点访问我们的数据。

创建一个新目录, 控制器 , 并在一个新文件中 author_controller.go .

现在,我们将只创建一个骨架 作者控制器 并暂时跳过业务逻辑。

 // 控制器/author_controller.go 包控制器  
  
 进口 (  
 “github.com/gin-gonic/gin”  
 )  
  
 func AuthorController(路由器 *gin.Engine) {  
 路径:=“/api/作者” router.GET(路径,函数(c *gin.Context){ }) router.GET(path+"/:id", func(c *gin.Context) { })  
 }

现在我们需要进入 main.go 文件并将我们的控制器连接到我们之前创建的路由器变量。

 // main.go 进口 (  
 “作者-api/控制器”  
 “github.com/gin-gonic/gin”  
 ) 功能主要(){  
 路由器 := gin.Default()  
 controller.AuthorController(router) // 添加这一行  
 路由器。运行(“本地主机:8082”)  
 }

第六步:

现在我们将实现我们的业务逻辑。我们需要将数据存储在某个地方,但在本教程中,我们不会为了简单起见而使用任何数据库。我们的数据将存储在内存中。

 // 模型/作者.go var stephenKingBooks = []书{  
 书{ID:“1”,名称:“局外人”},  
 书{ID:“2”,名称:“写作”},  
 }  
  
 var 作者 = []作者{  
 Author{ID: "1", Name: "Stephen King", Books: &stephenKingBooks},  
 }

现在回到 author_controller.go .

 // 控制器/author_controller.go ... router.GET(路径,函数(c *gin.Context){  
 作者 := model.Authors  
 c.IndentedJSON(http. _状态正常_ , 作者)  
 }) ...

代码说明:

  1. 我们获取数据并将其存储在 作者 多变的

  2. 我们以状态 ok (200) 和格式化(缩进)JSON 响应

    // 控制器/author_controller.go ... router.GET(path+"/:id", func(c *gin.Context) {
    authorId := c.Param("id")
    var author model.Author
    对于 _, previewAuthor := range model.Authors {
    如果 previewAuthor.ID == authorId {
    作者 = 预览作者
    }
    }
    if (model.Author{}) == 作者 {
    c.IndentedJSON(http. 状态未找到 , 无)
    } 别的 {
    c.IndentedJSON(http. 状态正常 , 作者)
    }
    }) ...

代码说明:

  1. 我们检索通过 URL 参数传递的 ID
  2. 我们遍历作者并检索与传递给我们请求的 ID 相同的作者
  3. 如果没有具有相同 ID 的作者,我们会以 status not found (404) 响应并返回 nil
  4. 如果存在具有相同 ID 的作者,我们将返回状态 ok (200) 和作者的对象

第七步:

如果你大老远来,我有好消息。我们结束了!

现在打开您的终端(确保您与 main.go 文件)并执行 去运行 main.go 命令来运行我们的项目。

我们的后端服务已上线 本地主机:8080 我们的端点位于 本地主机:8080/api/作者

完整的源代码在我的 GitHub .

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

本文链接:https://www.qanswer.top/5832/09540100

标签:控制器,我们,GoLang,go,API,gin,作者,Gin,ID
From: https://www.cnblogs.com/amboke/p/16645055.html

相关文章

  • HttpClient和IHttpClientFactory借助第三方库生成的客户端Refit andWebApiClientCore
    理解ASP.NETCore-发送Http请求(HttpClient)  注:本文隶属于《理解ASP.NETCore》系列文章,请查看置顶博客或点击此处查看全文目录前言在.NET中,我们有很多发送Ht......
  • 在ubuntu 上安装golang
    https://golang.google.cn/dl/方式一下载安装包wgethttps://golang.google.cn/dl/go1.19.linux-amd64.tar.gz解压到文件夹下sudotar-xvzfgo1.19.linux-amd64.ta......
  • JavaScript之数组常用API
    这篇文章主要帮助大家简单理解数组的一些常用API用法,许多小伙伴常用方法记不住?别急,看完下面的介绍您一定就会明白各个方法是如何用的了......
  • golang解析yaml文件
    golang解析yaml文件yaml文件是目前最常用的配置文件,使用go语言编写代码和工具时,也会用到yaml文件,将服务配置及中间件等信息定义到yaml文件中,那么如何将yaml文件中定......
  • 花了两天时间搞定的bug:Unable to convert the Pixel Data as the 'pylibjpeg-libjpeg'
    BUG发生场景:在使用Pydicom包读取含下列压缩类型中的JPEGLossless(Process14,SV1)的dcm图像时,由下图可知需要安装GDCM或者pylibjpeg才能进行正常读取。然而,笔者不仅仅安......
  • Docker安装nginx
    一.拉取nginx镜像到本地。dockerpullnginx查看镜像库,获取本地的nginx镜像信息dockerimagesnginx 二、启动容器。dockerrun--privileged=true-eTZ="A......
  • APISpace 空气质量查询API
    本文我就来说说APISpace的空气质量查询API,支持国内3400+个城市的整点观测,并附带空气质量监测点(全国共2335个)的整点观测数据。获取指定城市的整点观测空气质量,包含空气......
  • APISpace 天气预报查询API
    今天就来和大家说说APISpace的天气预报查询API,它支持全国以及全球多个城市的天气查询,包含国内3400+个城市以及国际4万个城市的实况数据;更新频率分钟级别。 这套API......
  • APISpace IP归属地API
    今天我就来和大家说一说APISpace的IP归属地API,它可以根据IP地址查询归属地信息,包含国家、省、市、区县和运营商等信息。IP归属地的应用领域有哪些呢?应用领域1.网络......
  • seafile onlyoffice k8s traefik Cross origin requests are only supported for prot
    这个问题我实际上是用答案倒推寻找的原因完整报错:hasbeenblockedbyCORSpolicy:Crossoriginrequestsareonlysupportedforprotocolschemes:http,data,chr......