首页 > 解决方案 > 为不精确过滤设计端点的正确、RESTful 方式

问题描述

假设我有 GET /objects/{id}、 GET/objects/{code}和 POST的端点/objects,按照 RESTful 设计的规定,并且objects有字段namecode(唯一)。

我想objects在另一个应用程序中使用数据,特别是在namecode.

在我看来,选项是

哪个更 RESTful?还有其他选择吗?

标签: restapi-design

解决方案


这取决于我的目标是什么。

如果我的所有应用程序除了“粗略”对象之外,都是通过自动完成进行搜索,也许还有其他一些固定搜索,我会使用特定的端点和操作。

  • GET /objects/autocomplete?prefix=<>

这可能看起来很奇怪,因为这根本不是 RESTful,但我的意思是创建一个简单而具体的端点,以防万一这就是您的应用程序的全部内容。

但当然,如果应用程序需要支持更灵活的过滤,我会选择在有效负载中包含过滤器的 POST 请求。

  • POST /objects/search

两者都不一定非常 RESTful,在我看来 REST 并不总是最好的策略,更重要的是用例。无论如何,对象“粗鲁”和关系操作都是(RESTful),所以我会保持这些不变,这就是为什么你可能更喜欢/objects/search只是/objects(在 GET 和 POST 中),以确保你不影响域。

您可以在这里更深入地阅读:https ://softwareengineering.stackexchange.com/questions/353086/what-is-a-proper-way-to-do-a-complex-restful-search-method


推荐阅读