Ped*_*eck 36
理论上,没有什么可以阻止您在请求中发送请求主体GET.HTTP协议允许它,但没有定义的语义,因此您可以记录客户端发送GET有效负载时将要发生的确切情况.例如,您必须定义JSON主体中的参数是否等同于查询字符串参数或其他完全相同的参数.
但是,由于没有明确定义的语义,因此您无法保证应用程序和客户端之间的实现会尊重它.服务器或代理可能会拒绝整个请求,或忽略正文或其他任何内容.处理破坏的实现的REST方法是以与应用程序分离的方式规避它,所以我说你有两个选项可以被认为是最佳实践.
简单的选择是使用POST而不是GET其他答案的建议.由于POSTHTTP没有标准化,因此您必须记录应该如何工作.这是最少的RESTful选项,但它很好.
我更喜欢的RESTful选项是实现您的应用程序,假设GET有效负载永远不会被篡改.然后,如果某些内容的实现中断,您允许客户端使用覆盖HTTP方法X-HTTP-Method-Override,这是客户端模拟HTTP方法的常用约定POST.因此,如果客户端具有损坏的实现,它可以将GET请求编写为POST发送X-HTTP-Method-Override: GET方法,并且您可以使用与应用程序实现分离的中间件并相应地重写该方法.如果你是纯粹主义者,这是最好的选择.
小智 6
要回答您的问题,是的,您可以在URI中传递JSON作为GET请求的一部分(如果您使用URL编码).但是,考虑到这样做的原因是由于URI的长度,使用JSON会弄巧成拙(引入的字符多于所需的字符数).
我建议您在POST请求的正文中发送参数,可以是常规CGI样式(param1=val1¶m2=val2)或JSON(在收到时由您的API解析)
| 归档时间: |
|
| 查看次数: |
106311 次 |
| 最近记录: |