这样的REST GET API的推荐时间戳格式是什么:
http://api.example.com/start_date/{timestamp}
我认为实际日期格式应为ISO 8601格式,例如UTC时间为YYYY-MM-DDThh:mm:ssZ
。
我们是否应该使用不带连字符和冒号的ISO 8601版本,例如:
http://api.example.com/start_date/YYYYMMDDThhmmssZ
或者我们应该使用例如base64编码来编码ISO 8601格式吗?
答案 0 :(得分:65)
查看此文章,了解API日期和时间HERE的5条法则:
文档中的更多信息。
答案 1 :(得分:59)
REST没有推荐的日期格式。真的可归结为最适合您的最终用户和系统的功能。就个人而言,我希望坚持像ISO 8601(url编码)那样的标准。
如果没有丑陋的URI是一个问题(例如,不包括:
的网址编码版本,{URI}中的-
,和(人)可寻址性并不重要,你也可以考虑纪元时间(例如
http://example.com/start/1331162374
)。 URL看起来更清晰,但你肯定会失去可读性。
/2012/03/07
是您经常看到的另一种格式。你可以扩展我的想法。如果你走这条路,只要确保你总是处于GMT时间(并在文档中明确说明),或者你可能还想要包含某种时区指标。
归根结底,它归结为适用于您的API和最终用户的内容。您的API应该适合您,而不适合您; - )。
答案 2 :(得分:10)
RFC6690 - Constrained RESTful Environments (CoRE) Link Format没有明确说明日期格式应该是什么,但是section 2. Link Format它指向RFC 3986.这意味着应该使用RFC 3986中的日期类型建议。
基本上RFC 3339 Date and Time on the Internet是要查看的文件:
用于Internet协议的日期和时间格式 用于表示日期和时间的ISO 8601标准的简介 使用公历的次数。
归结为: YYYY-MM-ddTHH:mm:ss.ss±hh:mm
(例如1937-01-01T12:00:27.87 + 00:20)
最安全的赌注。
答案 3 :(得分:4)
输入/输出中的每个日期时间字段都必须采用 UNIX/epoch 格式。这避免了API各个方面的开发人员之间的混乱。
优点:
缺点:
注释:
答案 4 :(得分:0)
始终使用UTC:
例如,我有一个包含一个参数DATETIME的日程表组件。 当我使用GET动词调用它时,我使用以下格式,其中我的传入参数名称为scheduleDate。
示例:
https://localhost/api/getScheduleForDate?scheduleDate= 2003-11-21T01:11:11Z