首页 >后端开发 >Golang >使用 Milogo for Gin-Gonic 简化您的 REST API 响应

使用 Milogo for Gin-Gonic 简化您的 REST API 响应

DDD
DDD原创
2024-11-27 10:27:09400浏览

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