【问题标题】:MIME versus JSON for HTTP POST bodyHTTP POST 正文的 MIME 与 JSON
【发布时间】:2012-07-11 12:38:56
【问题描述】:

我们有一个 HTTP RPC api,它的所有参数都将使用 JSON 进行编码。这行得通,但在 http 帖子的正文中混合 MIME x-www-form-urlencoding 和 JSON 实际上感觉不是很优雅。 IE。身体可能看起来像这样:

POST /my/rpc/api/endpoint

foo={"x":123,"y":true}&bar=[1,2,3,4,5,6,7]

我见过根本不使用 MIME 并使用完整 json 编码的服务。例如:

POST /my/rpc/api/endpoint

{"foo":{"x":123,"y":true},"bar":[1,2,3,4,5,6,7]}

我认为后一种解决方案看起来更干净,但是我不太确定这是否违反了 HTTP 约定以及这会产生什么影响。这是要避免的吗?例如,这是否会使实施客户端变得更加困难?

【问题讨论】:

    标签: jquery ajax json http rest


    【解决方案1】:

    在 POST 有效负载中使用 JSON 没有任何问题。重要的是使用正确的互联网媒体类型,例如“application/json”,而不是“application/x-www-form-urlencoded”。

    【讨论】:

      【解决方案2】:

      使用 x-www-form-urlencoded 传递的数据被视为字符串。话虽如此,您可以将字符串视为您想要的任何内容。如果您有一个格式正确的字符串,可以编码和解码为 JSON,那将非常有效。如果您有一个简单的方法来查看帖子正文,您可以提取 JSON 字符串。

      使用 PHP,我实际上不确定如何查看正文,所以我必须这样做:

      json='{"foo":{"x":123,"y":true},"bar":[1,2,3,4,5,6,7]}'
      //php
      $json = json_decode($_POST['json']);
      

      【讨论】:

        猜你喜欢
        • 2012-04-12
        • 1970-01-01
        • 1970-01-01
        • 2011-03-29
        • 1970-01-01
        • 2020-07-08
        • 1970-01-01
        • 2015-06-28
        • 1970-01-01
        相关资源
        最近更新 更多