使用 Gin 框架制作 RESTful API
已发表: 2022-09-02您是否期待在 Gin 框架的帮助下创建 REST API? 然后,您应该彻底阅读此博客。 通过简单的步骤,您将学习创建一个基本的 API,然后您可以进行其他复杂的项目。 是的,你可以在不使用 Golang 开发服务的情况下自己解决问题。 但是,在我们开始之前,先熟悉一下 Gin 框架的理论方面。
- 第一个要完成的任务
- 您需要先在 go-workspace 中创建一个目录。 如果您使用的是 Windows 计算机,您将使用命令提示符。 如果您使用 macOS 或 Linux 作为操作系统,请使用终端。
- 在这种情况下,我将使用命令提示符。
cd 去工作区
mkdir 作业
光盘工作
代码 。
当我们输入 code . 时,我们会看到 VS Code 启动。 在您的情况下,它可能是不同的 IDE 或编辑器。
- 开始使用 VS 代码
- 我们要做的第一件事是创建一个 main.go 文件。 在此之后,我们必须下载 gin 框架以创建 REST API。
- 我们现在必须构建一个 go.mod 文件。 我们输入:
go mod init golang.com/job
- 创建 go.mod 文件后,我们将输入:
去 github.com/gin-gonic/gin
这将导致创建 go.sum 文件以及下载与 gin 框架相关的所有必要包。
- 让我们开始使用简单的 API
- 我们只要写下代码
包主
进口 (
“fmt”
“网络/http”
“github.com/gin-gonic/gin”
)
函数主()
{s :=gin.Default()
s.GET (“”, func (c *gin.Context){
c.String(http.StatusOK, “工作角色是什么?”)
})
s.Run(“本地主机:8000”)
}
- 如您所见,我们已经导入了应用程序所需的每个包。 然后我们直接进入main函数。 我们正在做的是为 Gin 构建一个恢复或记录器中间件默认模块。
- 默认设置包含在变量“s”中。 我们将使用这个变量来帮助 GET API 开发。 我在这个例子中给出的第一个参数是 API 的 URL。
- w.Run(“localhost:8000”) 指定的基本 URL 将用于在 localhost:8000 托管 API。 此外,第一个参数实际上表示 API 的相对路由。
- 处理函数func(c *gin.Context)指的是你可以给出的函数序列。
- 指向变量 *gin.Context 的指针用作函数的参数。 因此,本例中的“c”代表上下文。
- 上下文必须返回 c.String 或 c.JSON 的值。 这里,有两个操作标准。 状态由第一个参数表示,一个简单的整数 (http.StatusOK)。 我们可以使用它,因为我们导入了 net/http 包。
- 在此之后我只是发送一个示例字符串。 它是“什么是工作角色?”
- 让我们运行上面的程序
为了运行程序,我们必须输入 go run main.go。

- 如您所见,在空白 URL 上存在 GET 请求。 它还带有可定制的功能。 此外,发动机的释放模式操作是可见的。 在 localhost 8000 有一个活动端点。
- 在网络浏览器中,我们可以输入 localhost:8000 来查看:
- 同时,您将在 VS Code 中看到以下快照

这是什么意思? 好吧,gin 框架在监控执行代码的响应时间方面发挥了重要作用。
- 专注于通过 URL 处理参数传递的 GET API
下面的代码假定 API 将为您提供一个值,最好是一个字符串,以响应 URL。
s.GET(“/:get”, func (c *gin.Context){
var val = c.Param(“getr”)
c.JSON(http.StatusOK, gin.H{
“响应数据”:val,

})
})
//第二节
- 我们可以通过用冒号分隔每个变量名称来将它们提供到 GET 请求中。 因此,在基本 URL 之后输入的所有内容都将被视为“获取”。
- 要确定“get”的值,我们必须定义 Param 的上下文和我们提到的变量的名称。 Val 将收到来自 Gin 的“get”并被告知结果。
- 接下来,我们看到我正在传输一个包含该值的 JSON。
你在做一些复杂的事情吗? 那么最好使用Golang 开发服务,以防您偶然发现问题并且无法修复它。
- 让我们运行上面的程序
- 同样,我们必须通过键入 go run main.go 来运行程序。
如果您看到消息“tcp 127.0.0.1: 8000: bind:通常只允许每个套接字地址(协议/网络地址/端口)使用一次。”,那么您必须在命令提示符中执行操作。
巢-ano | 发现str:8000
检查 LISTENING 的值(例如 7932),然后您必须输入
taskkill / pid 7932 /F
这将导致 pid 进程的终止。
- 在浏览器上,我们执行以下操作:

我们必须在声明 localhost:8000 后输入字符串的原因是 API 需要来自 URL 的字符串。
- 尝试 POST API
- 我们将在此处尝试连接到 POST API。 此外,我们知道数据将存在于正文中。 这时候结构体就派上用场了。
- 你还记得这个部分吗?
包主
进口 (
“fmt”
“网络/http”
“github.com/gin-gonic/gin”
)
- 在此之后,我们将创建一个具有两个数据字段的结构,如您所见:
类型工作结构{
工资 int `json:”salary” binding: “required”`
名称字符串 `json:”name” 绑定:“required”`
}
- json:”salary” 和 json:”name” 代表不同的键。 您还可以看到绑定已被指定为“必需”。
- 在 //2nd 部分之后,我们将输入:
s.POST(“/highlight”, func (c *gin.Context){
var 数据作业
if err := c.ShouldBind(&data); 错误!=无{
fmt.Println(错误)
c.JSON(http.StatusBadRequest, gin.H{
“错误”:fmt.Sprintf(“%v”, err),
})
} 别的{
c.JSON(http.StatusOK, gin.H{
“数据”:数据,
})
}
})
- 让我们看看这个代码块。 在 s.POST 中,我们将为 Job 构造对象。 之后,上下文“c”应附加到数据模型。 如果 c.ShouldBind(&data) 抛出错误,它将向 API 发出问题警报。
- 我提出了一个错误的请求,该请求演示了在 c.JSON(http.StatusBadRequest) 中的“error”:fmt.Sprintf(“%v”, err) 中观察到的错误。
- 如果没有问题,“数据”密钥将用于将数据传输回 API 响应。
- 让我们运行最后的代码块
- 现在让我们检查程序的最后阶段。 我们必须输入 go run main.go 来执行此操作。 此外,我将使用 Postman 来展示 API 的工作原理以及代码的工作原理。 桌面版只需要安装即可。
- 如果您查看下面的屏幕截图,您可以看到我在正文中有两个数据字段。 Raw 和 JSON 应该是 Body 的选择。

- 当我们点击“发送”时,我们将看到以下结果:
{
“数据”: {
“工资”:23000,
“名称”:“罗伯特·霍尔”
}
}
你能看懂程序吗? 是的? 然后,太好了。 在最后一种情况下,我们看到三个 API 正在运行,一个在 URL 中没有提及,一个需要字符串,最后一个需要正文中的值。 希望您现在可以处理一些具有挑战性的 REST API 任务。