使用 Gin 框架製作 RESTful API

已發表: 2022-09-02

您是否期待在 Gin 框架的幫助下創建 REST API? 然後,您應該徹底閱讀此博客。 通過簡單的步驟,您將學習創建一個基本的 API,然後您可以進行其他復雜的項目。 是的,你可以在不使用 Golang 開發服務的情況下自己解決問題 但是,在我們開始之前,先熟悉一下 Gin 框架的理論方面。

  1. 第一個要完成的任務
  • 您需要先在 go-workspace 中創建一個目錄。 如果您使用的是 Windows 計算機,您將使用命令提示符。 如果您使用 macOS 或 Linux 作為操作系統,請使用終端。
  • 在這種情況下,我將使用命令提示符。

cd 去工作區

mkdir 作業

光盤工作

代碼 。

當我們輸入 code . 時,我們會看到 VS Code 啟動。 在您的情況下,它可能是不同的 IDE 或編輯器。

  1. 開始使用 VS 代碼
  • 我們要做的第一件事是創建一個 main.go 文件。 在此之後,我們必須下載 gin 框架以創建 REST API。
  • 我們現在必須構建一個 go.mod 文件。 我們輸入:

go mod init golang.com/job

  • 創建 go.mod 文件後,我們將輸入:

去 github.com/gin-gonic/gin

這將導致創建 go.sum 文件以及下載與 gin 框架相關的所有必要包。

  1. 讓我們開始使用簡單的 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 包。
  • 在此之後我只是發送一個示例字符串。 它是“什麼是工作角色?”
  1. 讓我們運行上面的程序

為了運行程序,我們必須輸入 go run main.go。

  • 如您所見,在空白 URL 上存在 GET 請求。 它還帶有可定制的功能。 此外,發動機的釋放模式操作是可見的。 在 localhost 8000 有一個活動端點。
  • 在網絡瀏覽器中,我們可以輸入 localhost:8000 來查看:
  • 同時,您將在 VS Code 中看到以下快照

這是什麼意思? 好吧,gin 框架在監控執行代碼的響應時間方面發揮了重要作用。

  1. 專注於通過 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 開發服務,以防您偶然發現問題並且無法修復它。

  1. 讓我們運行上面的程序
  • 同樣,我們必須通過鍵入 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 的字符串。

  1. 嘗試 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 響應。
  1. 讓我們運行最後的代碼塊
  • 現在讓我們檢查程序的最後階段。 我們必須輸入 go run main.go 來執行此操作。 此外,我將使用 Postman 來展示 API 的工作原理以及代碼的工作原理。 桌面版只需要安裝即可。
  • 如果您查看下面的屏幕截圖,您可以看到我在正文中有兩個數據字段。 Raw 和 JSON 應該是 Body 的選擇。
  • 當我們點擊“發送”時,我們將看到以下結果:

{

“數據”: {

“工資”:23000,

“名稱”:“羅伯特·霍爾”

}

}

你能看懂程序嗎? 是的? 然後,太好了。 在最後一種情況下,我們看到三個 API 正在運行,一個在 URL 中沒有提及,一個需要字符串,最後一個需要正文中的值。 希望您現在可以處理一些具有挑戰性的 REST API 任務。