gpt4 book ai didi

具有多个 View 的 REST 资源

转载 作者:行者123 更新时间:2023-12-04 02:07:54 25 4
gpt4 key购买 nike

我们正在尝试为我们的 REST 服务遵循一个非常严格的习惯用法,但是我们遇到了这样一种情况,我们有两个客户需要相同资源的不同表示。一个是前端,他们更喜欢只有他们需要的字段的非常小的资源,并且在更扁平的结构中(为了性能),另一个需要我们在数据存储中的所有字段都在一个高度嵌套的结构中。 REST 服务处理此问题的惯用方式是什么,因为规范 URL 应该与它们访问相同的资源相同。我们考虑过在请求中添加投影,但这样结构仍然会相当嵌套,这会导致 JS 客户端出现性能问题,因为它必须遍历结构并将其展平,这在资源数量时可能会非常昂贵返回率高。

最佳答案

我建议有两种选择:

1) 如果查询字段可以变化,您可以指定您想要的字段(结构)作为查询参数。这在 REST API 中很常见。如果没有指定,您将返回默认的字段列表。什么应该默认或不默认取决于服务,但一般来说,最小集可以为性能提供更好的默认值。为了避免列出所有字段,可以使用类似 fields=all 的内容。在你的情况下 structure 可能更有意义。

2) 您可以在自定义请求 header 中对字段请求进行编码。有些人会争辩说这是更 REST-ful 的方法,因为您只修改响应的格式而不是调用的基础操作,因此 URL 应该相同。

在实践中,大多数服务更喜欢第一种方法,因为它被认为更容易接近。

就我个人而言,我认为这是一个边际选择。我更喜欢在 Accept header 中对返回媒体(JSON、HTML、XML 等)进行编码。任何体面的开发人员都拥有可以轻松设置 header 的工具,但根据我的经验,fields 查询参数习惯用法更为普遍,并且有很多约定俗成的地方。

请注意,如果您使用 header 方法,您可能不应该将 Accept header 用于结构/字段规范。如果你走那条路,请添加你自己的标题。

关于具有多个 View 的 REST 资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22630985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com