【发布时间】:2018-11-22 11:19:46
【问题描述】:
我已经实现了一个 /GET HTTP 端点来提供搜索功能。用户在查询参数中发送搜索词并接收包含所有搜索结果的 JSON 响应。
现在我必须添加一个新功能,即保存搜索。这意味着用户发送相同的搜索参数,也可以发送一个布尔参数,比如 save=true。在这种情况下,我必须将搜索词保存在数据库中以备将来使用。但是这个参数不是必须的。
我对以下几点感到困惑:
- 修改相同的 GET HTTP 端点,允许在查询参数中添加额外的 save 参数。
- 修改相同的 GET HTTP 端点,但在请求正文中传递保存参数而不是查询参数作为其后端状态更改参数。
- 使用单独的端点使用 POST 方法保存参数。
这样做的标准/可接受的方式是什么?
【问题讨论】:
-
2.是不可能的,因为 GET 不应该有主体
-
@WilliamChong 虽然不是不可能,但是根据 HTTP 标准,GET 不应该有请求正文,这就是为什么我会遇到这种情况。
-
@RomanVottner 更新了声明以使其更加清晰。