【问题标题】:JSON data to web service- how do define expected JSON dataJSON 数据到 Web 服务 - 如何定义预期的 JSON 数据
【发布时间】:2012-09-18 01:21:53
【问题描述】:

我正在用 PHP 构建一个接受 JSON 作为其有效负载的 RESTful Web 服务 . 现在,我的问题是,我如何准确地向用户描述 JSON 请求的格式?我是 JSON 新手,我认为我没有 100% 掌握。

其他用户系统基本上会创建一个包含我需要的键值对的数据结构(如数组),将其编码为 JSON 并将其发送到我的 Web 服务吗?

我是否真的给他们一份阵列需要的副本? 谢谢!

【问题讨论】:

  • REST 服务通常会输出 JSON 编码的数据;您真的将 input 作为 JSON 编码(而不是标准的 GET 查询参数或 POST 数据值?)?
  • 最常见的是什么?如果 POST 值是标准,那么我将采用它。该服务将接受许多产品代码/数量。你如何通过 POST 传递这些数据?类似于:product_1=item1&product_1_qty=2&product_2=item2&product_2_qty=5?
  • 对于更新数据,是的,POST 是常见的,并且是 RESTful 方法所必需的;查看我的答案以获得完整的解释
  • JSON schema validation with PHP 的可能重复项 - 您根据 Json 模式进行验证,请参阅 json-schema.org
  • POST 数据实际上不必是查询字符串。发布 JSON 编码的数据是完全有效的 - POST 数据的格式是使用传出请求的“Content-Type”标头定义的,默认为“application/x-www-form-urlencoded”,但可以是任何事物。如果您要存储 JSON 数据,那么通过 POST 接受 JSON 数据对我来说似乎是合理的。

标签: php json web-services rest


【解决方案1】:

遵循 REST 准则,您从 API 用户那里获得的输入应该是 URL 的一部分(对于 GET 请求;不更新数据,即 http://example.com/api/doc/1243),或者应该是 POST变量(在 HTTP 请求的正文中发送到相同的 URL)。

所以对于文档,您需要做的就是指出端点 URL (http://example.com/api/doc/1243)、他们需要使用 POST 的事实以及变量是什么(即titlebodyauthor , 等等。)。然后用户将根据需要形成正确的 HTTP 请求,并且在您的服务器端,因为您使用的是 PHP,您将从$_POST 数组中提取他们的变量(即$_POST['title']$_POST['body'] 等)

【讨论】:

  • 谢谢你-很好的答案。因此,以购物车为例,产品将如何在查询字符串中传递(因为可能有很多产品?)。您是否只执行“product_1=test&product_1_qty=4&product_2=test2&product_2_qty=9? 等?
  • 要将产品添加到购物车,您可以这样组织它。或者,让最终用户多次调用“添加到购物车”方法,每个产品一次:端点/api/cart/1243/add 与数据product_idquantity 调用,但需要多次调用。
【解决方案2】:

Dropbox 是使用 JSON 作为有效负载的 RESTful api 的一个很好的例子。

您还将了解如何记录您的 API。

【讨论】:

  • 谢谢你-这是完美的。一个很好的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多