首页 > 解决方案 > 通过多个标签获取问题的良好 REST API 设计是什么?

问题描述

我有“问题”和“标签”资源,其中每个问题都分配了多个标签。现在我想在我的网站中实现搜索功能,用户将输入多个标签并按搜索。我将不得不获取包含用户输入的所有标签的问题列表。实现该逻辑的良好 REST api url 是什么?

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

1.在请求体中包含标签列表

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

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

标签: rest

解决方案


在 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

RFC 6570中指定的 URI 模板定义了列表的各种变量扩展。因此,如果您选择与其中一个扩展匹配的 URI 拼写,则需要将标识符组合/分解为标签列表的代码可以使用现成的技术来完成。

(注意级别;并非所有模板库都完全符合标准——你必须平衡“哦漂亮”和“哦实用”。)

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

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

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

REST 接口旨在高效地进行大粒度超媒体数据传输,针对 Web 的常见情况进行了优化,但导致的接口对于其他形式的架构交互来说并不是最佳的。


推荐阅读