ホームページ >バックエンド開発 >Golang >Gin-Gonic の Milogo を使用して REST API レスポンスを簡素化する

Gin-Gonic の Milogo を使用して 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 で作業しましたが、これには多くのエンドポイントにわたって大量のデータを表示する必要がありました。

このタイプのシナリオで必須の機能の 1 つは ページネーション ですが、見落とされがちなパターンは 部分応答 (別名フィールド選択) です。これは、Web サーバーの応答に含まれるデータ量をフィルターで除外するための非常に優れた追加機能でもあります。

フィールド選択とは何ですか?

まず、フィールド選択について私が何を意味するのかを明確にしましょう。次のエンドポイントがあると想像してください:

// > 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 は、API 応答を処理し、fields クエリ パラメーターで指定されたフィールドをフィルターで除外し、要求されたデータのみを返す Jin ミドルウェアです。

利用可能な主な機能の一部:

  • json オブジェクトと json 配列のサポート。
    したがって、Milogo は、項目の配列または 1 つの項目だけで始まる JSON 応答のフィールドをフィルターできます。

  • ネストされた JSON オブジェクト内のフィールドのフィルタリングのサポート。
    Milogo は、次の形式でネストされた JSON オブジェクトのフィルタリングもサポートしています。コード、価格(金額)

  • 別の json でラップされた json のサポート。
    JSON 応答が別の JSON オブジェクトでラップされる場合があります。Milogo は実際のペイロードのフィルタリングをサポートしています (ラップされた例を参照):

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

はじめる

他の gin ミドルウェアと同様に、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 を効率的にしましょう!

以上がGin-Gonic の Milogo を使用して REST API レスポンスを簡素化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。