SB2*_*055 3 asp.net rest json asp.net-web-api
我认为RESTful搜索的标准方法是这样的:
GET /users?parameter1=value1¶meter2=value2¶meter3=value3¶meter4=value4
Run Code Online (Sandbox Code Playgroud)
但我想做这样的事情:
GET /users
# Request body:
{
"parameter1": "value1",
"parameter2": "value2",
"parameter3": "value3",
"parameter4": "value4"
}
Run Code Online (Sandbox Code Playgroud)
更新:我不能以上述方式使用GET,因为有些设备不尊重GET请求的正文内容.所以我不得不使用POST.
RESTful宗教信仰是我不应该使用POST将JSON数据发送到/api/search
端点的唯一原因,而不是使用URI吗?
以这种方式使用POST是否有任何技术上和可证明的危险?
我知道这与以下内容类似:
但我要问更具体的事情:即,除了"它不符合惯例"之外,这是一个坏方法的原因是什么.
您可以使用POST来执行此操作.HTTP规范不禁止它.
通过使用GET,您可以更准确地表示请求的特征.如果您使用POST,则中间人无法判断您是否正在执行安全,幂等的请求,即使您是.这可能会限制您从某些中介机构获得的收益.您将无法使用POST来利用缓存的响应.
如果你觉得失去这些好处并没有超过你看到的更清晰的URI的好处,那么请继续使用POST.
我建议你不要习惯在GET上使用POST而没有正当理由,但是在发送一个正文很有用的地方,那就去做吧.
还要意识到,如果在未来6个月,您真的希望可以缓存对搜索的响应,那么您始终可以将服务器响应更改为重定向,其中客户端使用GET进行重定向,该GET具有在Location URI中编码的参数然后你可以利用缓存的结果.
重要的是你绝不能使用Http方法来传达不正确的语义.即不要使用GET做不安全的事情.永远不要使用PUT做一些不是幂等的事情.但是,POST无论如何都不会限制请求,因此您始终可以使用POST.请注意,中介不能帮助POST.
归档时间: |
|
查看次数: |
634 次 |
最近记录: |