我们正在启动一个新的REST API,我希望获得一些社区的最佳做法方面的意见,以帮助我们格式化输入参数:
现在,我们的API以JSON为中心(仅返回JSON)。关于是否要返回XML的争论是一个单独的问题。
由于我们的API输出是以JSON为中心的,因此我们一直走在一条以JSON中心为输入的路径上,我一直在想这可能对某些人来说很方便,但总的来说很奇怪。
例如,要获得一些产品详细信息,以便可以同时提取多个产品,我们现在拥有:
http://our.api.com/Product?id=["101404","7267261"]
我们应该简化为:
http://our.api.com/Product?id=101404,7267261
还是方便使用JSON输入?更痛苦吗?
我们可能要接受两种样式,但是这种灵活性是否会导致更多的混乱和头疼(可维护性,文档等)?
一个更复杂的情况是,当我们想提供更复杂的输入时。例如,如果我们想在搜索中允许多个过滤器:
http://our.api.com/Search?term=pumas&filters={"productType":["Clothing","Bags"],"color":["Black","Red"]}
我们不一定要将过滤器类型(例如productType和color)作为请求名称,如下所示:
http://our.api.com/Search?term=pumas&productType=["Clothing","Bags"]&color=["Black","Red"]
因为我们想将所有过滤器输入分组在一起。
最后,这真的重要吗?可能有太多的JSON实用程序,所以输入类型没什么大不了的。
我知道我们的JavaScript客户端对API进行AJAX调用可能会喜欢JSON输入,从而使他们的生活更轻松。
[]
并非始终支持该语法(尽管它很常见,甚至可能违反URI规范)。某些HTTP服务器和编程语言只希望重复该名称(例如productType=value1&productType=value2
)。