对于发送数据并返回数据的REST请求,使用哪个动词? 搜索-请求包含查询参数,例如搜索词和分页值。未将任何更改/数据保留到后端

对于发送数据并返回数据的REST请求,使用哪个动词? 搜索-请求包含查询参数,例如搜索词和分页值。未将任何更改/数据保留到后端,rest,api,http,web-applications,Rest,Api,Http,Web Applications,我目前在这里使用带有查询参数的GET 数据转换-请求包含格式为A的数据,服务器发送格式为B的数据。未将任何更改/数据保留到后端 我目前在这里使用POST和请求参数。对于您的数据转换用例(这似乎更像是一个在服务器上处理某种表示的函数),答案更多地基于更高级别的HTTP谓词原则,而不是RESTful原则。这两种情况都是非-:它们不更改服务器,因此应该使用GET 这篇文章很好地讨论了这个话题,尤其是: 休息和功能不协调。如果URL包含函数、方法或命令,我会嗅到RPC–user1907906 搜索-请求

我目前在这里使用带有查询参数的GET

  • 数据转换-请求包含格式为A的数据,服务器发送格式为B的数据。未将任何更改/数据保留到后端

  • 我目前在这里使用POST和请求参数。

    对于您的数据转换用例(这似乎更像是一个在服务器上处理某种表示的函数),答案更多地基于更高级别的HTTP谓词原则,而不是RESTful原则。这两种情况都是非-:它们不更改服务器,因此应该使用GET

    这篇文章很好地讨论了这个话题,尤其是:

    休息和功能不协调。如果URL包含函数、方法或命令,我会嗅到RPC–user1907906

    搜索-请求包含查询参数,例如搜索词和分页值。未将任何更改/数据保留到后端

    如果请求应该不会在后端生成任何更改,那么您描述的是一个请求,因此您应该选择最合适的安全方法-GET如果您关心表示,HEAD如果您只关心元数据

    数据转换-请求包含格式为A的数据,服务器发送格式为B的数据。未将任何更改/数据保留到后端

    除非您可以将源代码表示形式塞进URL,否则POST是您唯一合理的选择。HTTP中没有“这是一个具有有效负载的安全方法”的方法

    在实践中,您也许可以使用而不是POST,这是对统一接口的滥用,但它至少允许您传达语义是一致的这一事实。关键漏洞是:

    由于在接收任何后续GET之前,目标资源可能由其他用户代理并行操作,或者可能由源服务器进行动态处理,因此无法保证这种状态更改是可观察到的。成功的响应仅意味着用户代理的意图是在源服务器处理时实现的