我正在尝试建立一个宁静的环境,API并且正在努力将JSON数据序列化到HTTP query string。
API
JSON
HTTP query string
在请求中需要传递许多强制性和可选参数,例如(以下表示为JSON对象):
{ "-columns" : [ "name", "column" ], "-where" : { "-or" : { "customer_id" : 1, "services" : "schedule" } }, "-limit" : 5, "return" : "table" }
我需要支持各种不同的客户端,因此我正在寻找一种标准化的方法来将此json对象转换为查询字符串。有一个,看起来怎么样?
另一种选择是允许用户仅在消息正文中传递json对象,但我读到我应该避免使用它。
有什么想法吗?
编辑以澄清:
在上面列出一些不同的语言如何编码给定的json对象:
jQuery
$.param
PHP
http_build_query
Perl
URI::query_form
complex_to_query
jQuery和PHP非常相似。使用complex_to_query的Perl也与它们非常相似。但是没有一个看起来完全一样。
对您的JSON文本进行URL编码(https://en.wikipedia.org/wiki/Percent- encoding),并将其放入单个查询字符串参数中。例如,如果您想通过{"val": 1}:
{"val": 1}
mysite.com/path?json=%7B%22val%22%3A%201%7D
请注意,如果您的JSON太长,则会遇到URL长度限制问题。在这种情况下,我将使用POST主体(是的,我知道,POST当您要获取某些内容时发送的消息不是“纯”的,并且不太适合REST范例,但是您的基于域的特定于JSON的查询语言也不是) 。
POST