使用 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 任務。