我目前在这里使用GET和查询参数。
我目前在这里使用带有请求参数的POST。
答案 0 :(得分:0)
对于您的数据转换用例(它似乎更像是在服务器上使用某种功能的函数),答案更多地基于更高级别的HTTP动词原则而不是RESTful原则。两种情况都是非idempotent:它们不对服务器进行任何更改,因此应该使用GET。
这个question对该主题进行了很好的讨论,尤其是comment:
REST和功能不能很好地结合在一起。如果URL包含函数,方法或命令,我会闻到RPC - user1907906
答案 1 :(得分:0)
搜索 - 请求包含查询参数,例如搜索词和分页值。没有任何更改/数据保留到后端。
如果请求不应该在后端生成任何更改,那么您正在描述safe的请求,因此您应该选择最合适的安全方法 - 如果您关心表示,请进行GET,HEAD如果你只关心元数据。
数据转换 - 请求包含格式为A的数据,服务器以格式B发送数据。没有更改/数据持久保存到后端。
除非您可以将源表示填充到URL中,否则POST是您唯一合理的选择。 HTTP中没有方法用于"这是一种带有效载荷的安全方法"。
在实践中,你或许可以使用PUT而不是POST - 这是滥用统一界面,但允许你至少沟通语义的事实idempotent。关键的漏洞是:
无法保证这样的状态更改是可观察的,因为目标资源可能被其他用户代理并行操作,或者在接收到任何后续GET之前可能受到源服务器的动态处理。成功的响应仅意味着用户代理的意图是在原始服务器处理时实现的。