使用 Milogo for Gin-Gonic 简化您的 REST API 响应
实现字段选择模式的 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中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

Golang在性能和可扩展性方面优于Python。1)Golang的编译型特性和高效并发模型使其在高并发场景下表现出色。2)Python作为解释型语言,执行速度较慢,但通过工具如Cython可优化性能。

Golang在并发性上优于C ,而C 在原始速度上优于Golang。1)Golang通过goroutine和channel实现高效并发,适合处理大量并发任务。2)C 通过编译器优化和标准库,提供接近硬件的高性能,适合需要极致优化的应用。

GoimpactsdevelopmentPositationalityThroughSpeed,效率和模拟性。1)速度:gocompilesquicklyandrunseff,ifealforlargeprojects.2)效率:效率:ITScomprehenSevestAndArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdArdEcceSteral Depentencies,增强开发的简单性:3)SimpleflovelmentIcties:3)简单性。

goisidealforbeginnersandsubableforforcloudnetworkservicesduetoitssimplicity,效率和concurrencyFeatures.1)installgromtheofficialwebsitealwebsiteandverifywith'.2)

Golang适合快速开发和并发场景,C 适用于需要极致性能和低级控制的场景。1)Golang通过垃圾回收和并发机制提升性能,适合高并发Web服务开发。2)C 通过手动内存管理和编译器优化达到极致性能,适用于嵌入式系统开发。

Golang和Python各有优势:Golang适合高性能和并发编程,Python适用于数据科学和Web开发。 Golang以其并发模型和高效性能着称,Python则以简洁语法和丰富库生态系统着称。

Golang和C 在性能上的差异主要体现在内存管理、编译优化和运行时效率等方面。1)Golang的垃圾回收机制方便但可能影响性能,2)C 的手动内存管理和编译器优化在递归计算中表现更为高效。

C 更适合需要直接控制硬件资源和高性能优化的场景,而Golang更适合需要快速开发和高并发处理的场景。1.C 的优势在于其接近硬件的特性和高度的优化能力,适合游戏开发等高性能需求。2.Golang的优势在于其简洁的语法和天然的并发支持,适合高并发服务开发。
