首頁 >後端開發 >Golang >使用 Milogo for Gin-Gonic 簡化您的 REST API 回應

使用 Milogo for Gin-Gonic 簡化您的 REST API 回應

DDD
DDD原創
2024-11-27 10:27:09404瀏覽

Simplify Your REST API Responses with Milogo for Gin-Gonic

實作欄位選擇模式的 Gin-Gonic 中介軟體

在我的公司,我們使用 Go 來建立內部工具。最近,我使用 gin-gonic 開發 REST API,這需要在多個端點顯示大量資料。

在這種類型的場景中必須具有的功能是分頁,但經常被忽略的模式是部分回應(又稱欄位選擇)。這也是一個非常好的補充,可以過濾掉網頁伺服器回應中的資料量。

什麼是領域選擇?

首先讓我們明確一下欄位選擇的意思。想像一下您有以下端點:

// > GET /api/products
[
  {
    "id": 1,
    "createdAt": "2024-18-11",
    "updatedAt": "2024-18-11",
    "code": "1",
    "price": {
      "amount": 100,
      "currency": "EUR"
    },
    "manufacturedBy": "myshop",
    "stock": 552,
    ...
  },
  ...
]

使用部分回應,客戶端可以使用欄位查詢參數過濾輸出,例如

// > GET /api/products?fields=code,price
[
  {
    "code": "1",
    "price": {
      "amount": 100,
      "currency": "EUR"
    }
  },
  ...
]

僅傳回查詢參數中宣告的欄位。減少有效負載大小並節省頻寬。

米洛戈介紹

我找不到任何可用於此模式的實現,因此我決定自己創建它,這就是 Milogo 的誕生。
Milogo 是一個 Gin 中間件,用於處理 API 回應,過濾出 fields 查詢參數中指定的字段,並僅傳回請求的資料。

一些可用的主要功能:

  • 支援 json 物件和 json 陣列。
    因此,Milogo 可以過濾以一組項目或僅以一個項目開頭的 JSON 回應欄位。

  • 支援過濾巢狀 json 物件中的欄位。
    Milogo 也支援過濾具有以下格式的嵌套 JSON 對象,例如代碼,價格(金額)

  • 支援將 json 包裹在另一個 json 中。
    有時 JSON 回應會包裝在另一個 JSON 物件中,Milogo 支援過濾實際負載(請參閱包裝範例):

// GET /products?fields=code,price(amount)
{
  "data": [
    {
      "code": 1,
      "price": {
        "amount": 100
      }
    },
    ...
  ],
  "_metadata": {
    ...
  }
}

入門

與任何杜松子酒中間件一樣,Milogo 非常易於使用和設置,您可以按照 github 存儲庫中的 README 進行操作,但基本上:

r := gin.Default()
r.Use(Milogo())

足以將 Milogo 中間件添加到您的 api。

在前面的範例中,Milogo 應用於每個端點,但也可以僅應用於一組端點,或僅應用於特定端點,例如

group := r.Group("/products", milogo.Milogo())
group.GET("", productsHandler)

在前面的範例中,只有 /products 群組才會套用 Milogo 的中間件。

結論

Milogo 旨在簡化 REST API 開發並改善客戶端-伺服器互動。查看 GitHub 儲存庫以取得範例和文件。

請隨時聯繫或貢獻 — 讓我們一起提升 REST API 的效率!

以上是使用 Milogo for Gin-Gonic 簡化您的 REST API 回應的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn