rest - 为不精确过滤设计端点的正确、RESTful 方式
问题描述
假设我有 GET /objects/{id}
、 GET/objects/{code}
和 POST的端点/objects
,按照 RESTful 设计的规定,并且objects
有字段name
和code
(唯一)。
我想objects
在另一个应用程序中使用数据,特别是在name
和code
.
在我看来,选项是
- GET
/objects?q={user-input}
whereq
是用户输入的内容,后端执行 SELECT 语句LIKE '%{user-input}%'
/objects/search
带有 JSON 有效负载的POST
哪个更 RESTful?还有其他选择吗?
解决方案
这取决于我的目标是什么。
如果我的所有应用程序除了“粗略”对象之外,都是通过自动完成进行搜索,也许还有其他一些固定搜索,我会使用特定的端点和操作。
GET /objects/autocomplete?prefix=<>
这可能看起来很奇怪,因为这根本不是 RESTful,但我的意思是创建一个简单而具体的端点,以防万一这就是您的应用程序的全部内容。
但当然,如果应用程序需要支持更灵活的过滤,我会选择在有效负载中包含过滤器的 POST 请求。
POST /objects/search
两者都不一定非常 RESTful,在我看来 REST 并不总是最好的策略,更重要的是用例。无论如何,对象“粗鲁”和关系操作都是(RESTful),所以我会保持这些不变,这就是为什么你可能更喜欢/objects/search
只是/objects
(在 GET 和 POST 中),以确保你不影响域。
推荐阅读
- python - 重塑层存在但不重塑
- python - 在 python 中从 JSON 数据中保存许多文件文本
- unity3d - Unity Line Renderer 不直
- python-3.x - 为函数找到一个只有一个输入(数组)的固定点
- python - 如何使用 Psychopy 生成和播放白噪声?
- c - 比较两个字符 [在 C 中]
- c - C Socket 编程中的选择只接收一个连接
- select - KDB+ 功能选择动态列
- javascript - 不支持 hapijs h2o2 协议
- jquery - 使用 JQuery 中的 for-each 循环为每个第二个 div 设置动画以增长到不同的大小