推荐的REST GET API的date格式
REST GET API的推荐时间戳格式是什么?
http://api.example.com/start_date/{timestamp}
我认为实际的date格式应该是ISO 8601格式,例如UTC时间的YYYY-MM-DDThh:mm:ssZ
。
我们是否应该使用不带连字符和冒号的ISO 8601版本,例如:
http://api.example.com/start_date/YYYYMMDDThhmmssZ
还是应该使用base64编码来编码ISO 8601格式?
REST没有推荐的date格式。 真的,它归结为什么最适合您的最终用户和您的系统。 就个人而言,我想要坚持像ISO 8601(url编码)的标准。
如果没有丑陋的URI是一个问题(例如不包括URL编码版本, 在你的URI中)和(人类)可寻址性并不重要,你也可以考虑历元时间(例如
http://example.com/start/1331162374
)。 该URL看起来更清洁一点,但是你肯定会失去可读性。
/2012/03/07
是你看到很多的另一种格式。 你可以扩大我的想法。 如果你走这条路线,只要确保你总是在格林尼治标准时间(并在文档中明确说明),或者你可能还想包括某种时区指标。
最终归结为什么适用于您的API和最终用户。 你的API应该适合你,而不是你的;-)。
查阅这篇文章的APIdate和时间的5个法律这里 :
- 法则1:在您的date使用ISO-8601
- 法则2:接受任何时区
- 法则3:以UTC存储
- 法则4:以UTC来回传
- 第五法则:如果你不需要的话,不要用时间
更多信息在文档中。
RFC6690 – 约束RESTful环境(CoRE)链接格式虽然没有明确规定date格式应该在第2节中。链接格式指向RFC 3986。这意味着应该使用RFC 3986中datetypes的build议。
基本上RFC 3339在互联网上的date和时间是一个文件,看看这样说:
date和时间格式,用于互联网协议,这是ISO 8601标准的简介,用于使用公历来表示date和时间。
这可归结为: YYYY-MM-ddTHH:mm:ss.ss±hh:mm
(例如1937-01-01T12:00:27.87 + 00:20)
是最安全的赌注。