对于Restful API,GET方法可以使用json数据吗?

这个问题在这里已经有了答案:

  • 带请求正文的HTTP GET 18个答案

  • 理论上,没有什么能够阻止你在GET请求中发送请求体。 HTTP协议允许使用它,但没有定义的语义,所以您需要记录客户端发送GET负载时发生的情况。 例如,你必须定义JSON体中的参数是否等价于查询字符串参数或其他东西。

    但是,由于没有明确定义的语义,因此您不能保证应用程序和客户端之间的实现会尊重它。 服务器或代理可能会拒绝整个请求,或者忽略主体或其他任何内容。 处理破碎实现的REST方法是以与应用程序分离的方式规避它,所以我会说你有两个选择可以被认为是最佳实践。

    简单的选项是使用POST而不是其他答案推荐的GET 。 由于POST不是通过HTTP进行标准化的,因此您必须记录应该如何工作。 这是最不RESTful选项,但没关系。

    我更喜欢RESTful选项,假设GET有效载荷永远不会被篡改,从而实现您的应用程序。 然后,如果实现有问题,您允许客户端使用X-HTTP-Method-Override来覆盖HTTP方法,这是客户使用POST模拟HTTP方法的流行惯例。 因此,如果客户端的实现有问题,它可以将GET请求写为POST ,发送X-HTTP-Method-Override: GET方法,并且可以有一个与应用程序实现分离的中间件,并相应地重写该方法。 如果你是纯粹主义者,这是最好的选择。


    要回答你的问题,是的,你可以在URI中传递JSON作为GET请求的一部分(提供你的URL编码)。 然而,考虑到你这样做的原因是由于URI的长度造成的,使用JSON将会自我毁灭(引入更多字符而不是必需的)。

    我建议你在POST请求的主体中发送你的参数,或者以常规的CGI风格( param1=val1&param2=val2 )或者JSON(在收到时由你的API解析)

    链接地址: http://www.djcxy.com/p/71451.html

    上一篇: For Restful API, can GET method use json data?

    下一篇: Can PUT request change the URL?