什么是好的RESTAPI设计,可以通过多个标记获取问题?

什么是好的RESTAPI设计,可以通过多个标记获取问题?,rest,Rest,我有“问题”和“标签”资源,每个问题都有多个标签。现在我想在我的网站上实现搜索功能,用户可以输入多个标签并按搜索。我必须获取包含用户输入的所有标签的问题列表。实现该逻辑的好RESTAPI url是什么 我想知道如何通过以下方式解决这一问题: 1.在请求正文中包括标记列表 2.在url的查询参数部分包含标记列表 最后,您建议使用这两种方法中的哪一种 在url的查询参数部分包含标记列表 那么: https://stackoverflow.com/questions/tagged/domain-dri

我有“问题”和“标签”资源,每个问题都有多个标签。现在我想在我的网站上实现搜索功能,用户可以输入多个标签并按搜索。我必须获取包含用户输入的所有标签的问题列表。实现该逻辑的好RESTAPI url是什么

我想知道如何通过以下方式解决这一问题:

1.在请求正文中包括标记列表

2.在url的查询参数部分包含标记列表

最后,您建议使用这两种方法中的哪一种

在url的查询参数部分包含标记列表

那么:

https://stackoverflow.com/questions/tagged/domain-driven-design+or+event-sourcing+or+cqrs
如果坚持将标记列表作为查询参数而不是路径段,则可以使用

https://stackoverflow.com/questions/tagged?domain-driven-design+or+event-sourcing+or+cqrs
中指定的URI模板定义了各种。因此,如果您选择的URI拼写与其中一个扩展匹配,则需要将标识符组合/分解为标记列表的代码可以使用现成的技术来完成此操作

(请注意;并非所有模板库都完全符合该标准——您必须在“漂亮”和“实用”之间取得平衡。)

最后,您建议使用这两种方法中的哪一种

REST体系结构风格侧重于资源的缓存表示,因此在消息体中包含查询参数的方法仅适用于将消息体合并到缓存语义中的REST式应用程序

在HTTP中,消息体没有合并到缓存语义中,因此API不适合与万维网集成的应用程序

REST接口的设计目的是高效地进行大粒度超媒体数据传输,针对Web的常见情况进行优化,但导致的接口对于其他形式的体系结构交互不是最佳的


这个问题几乎肯定在以前的某个地方讨论过,但是使用查询参数的主要问题是某些浏览器/设备可能会限制查询参数的大小。也许不太可能,但是您的用户可以使用许多(比如几十个)长标记发出查询。一个GET可能会切断其中一些。因此,在这里发帖子和使用请求主体可能是更安全的选择。@TimBiegeleisen感谢您的快速回复。我搜索了大部分相关问题,但不幸的是没有找到有用的东西。另外,在post请求的情况下,什么才是合适的url?使用post,您只需点击REST端点,您的特定API将负责构建请求的其余部分。