假设我有RESTful设计规定的GET /objects/{id}
,GET /objects/{code}
和POST /objects
的端点,而objects
的字段为name
,并且code
(唯一)。
我想在另一个应用程序中使用objects
数据,尤其是在name
和code
上都使用自动完成过滤功能。
如我所见,选项是
/objects?q={user-input}
,其中q
是用户输入的内容,后端使用LIKE '%{user-input}%'
执行SELECT语句/objects/search
哪个更RESTful?还有其他选择吗?
答案 0 :(得分:0)
这取决于我的目标。
如果我所有的应用程序除了“压缩”对象之外,都是通过自动完成功能进行搜索,也许还有其他一些固定搜索,那么我将使用特定的端点和操作。
GET /objects/autocomplete?prefix=<>
这看起来可能很奇怪,因为它根本不是RESTful的,但是我的意思是要创建一个简单而特定的端点,以防万一这就是您的应用程序所要解决的问题。
但是,当然,如果应用程序需要支持更灵活的过滤,我会选择POST请求,并在有效负载中添加过滤器。
POST /objects/search
两者不一定都非常RESTful,在我看来,REST并不总是最好的策略,更重要的是用例。无论如何,对象“挤压”和关联动作都是(RESTful),所以我将保持不变,这就是为什么您可能更喜欢/objects/search
(在GET和POST中)而不是/objects
您不会影响域。