RESTAPI:在哪里设置点格式部分?
在我们公司,我们将引入一个RESTAPI来获取各种系统的一些系统变量的每小时测量值 REST API的外观如下所示:RESTAPI:在哪里设置点格式部分?,api,rest,format,Api,Rest,Format,在我们公司,我们将引入一个RESTAPI来获取各种系统的一些系统变量的每小时测量值 REST API的外观如下所示: https://api.fubar.com/v1/hourlyMeasureValues/2014021723-2014032305/system/4711,4712,4713/variables/speed,pressure,temperature?sortOrder=-time&valueTypes=avg,min,max 这将获取测量值 时间范围为2014年2月
https://api.fubar.com/v1/hourlyMeasureValues/2014021723-2014032305/system/4711,4712,4713/variables/speed,pressure,temperature?sortOrder=-time&valueTypes=avg,min,max
这将获取测量值
- 时间范围为2014年2月21日23:00至2014年3月23日
- 对于我们的系统4711、4712和4713
- 对于速度、压力和温度变量
https://api.fubar.com/v1/hourlyMeasureValues.csv/2014021723-2014032305/system/4711,4712,4713/variables/speed,pressure,temperature?sortOrder=-time&valueTypes=avg,min,max
或者其他地方?我认为您将滥用REST生成报告。我不喜欢将系统放入URL的想法——对我来说,每个系统都是另一个REST资源。变量看起来像是对资源内容的过滤——最好使用查询参数进行过滤。我的建议是:
https://api.fubar.com/v1/system/4711/hourlyMeasureValues.json?
range=2014021723,2014032305&variables=speed,pressure,temperature
&sortOrder=-time&valueTypes=avg,min,max
如果您在一次呼叫中确实需要多个系统,那么我会将其更改为以下形式:
https://api.fubar.com/v1/reports/hourlyMeasureValues.json?
systems=4711,4712,4713&range=2014021723,2014032305
&variables=speed,pressure,temperature&sortOrder=-time&valueTypes=avg,min,max
如果您使用的是HTTP上的REST,那么您应该遵循的原则(参见第71页) 根据您所做的工作,您可能需要的不仅仅是内容类型,还可以实现适当的内容协商。例如,给定客户机可能仍然希望接收特定编码或语言的内容 但无论如何,HTTP方法是在头中设置所有这些内容
GET /myurl
Accept: application/json
Accept-Charset: ISO-8859-7
Accept-Language: en
服务器使用这些信息来确定要发送回客户端的正确响应
200 OK
Content-Type: application/json; charset=ISO-8859-7
Content-Language: en
没有“正确”的位置——这是一个毫无意义的概念。您的API框架应该能够在URI中放置扩展的任何地方使用suss。考虑到URI现在的存在,这对我来说似乎是最合理的地方
请注意,我同意Piotr和Edwin的观点。如果您选择第三种解决方案。你必须指定数百万个页面或URL,对吗?这是一个糟糕的选择。这是我的意见。内容类型协商应该使用
Accept
标题完成。您的客户机应该在标题中发送它期望的内容类型,您的服务器相应地生成内容,并使用相应的内容类型
标题集发送响应。对我来说,这是剩下的路。