web-dev-qa-db-ja.com

REST GET APIの推奨日付形式

REST GET APIの推奨タイムスタンプ形式は次のとおりです。

http://api.example.com/start_date/{timestamp}

実際の日付形式は、UTC時間のYYYY-MM-DDThh:mm:ssZなどのISO 8601形式でなければなりません。

次のようなハイフンとコロンなしでISO 8601バージョンを使用する必要があります。

http://api.example.com/start_date/YYYYMMDDThhmmssZ

または、base64エンコーディングなどを使用してISO 8601形式をエンコードする必要がありますか?

82

RESTには推奨される日付形式がありません。実際、エンドユーザーとシステムにとって最適なものに要約されます。個人的には、ISO 8601(URLエンコード)の標準に準拠したいと思います。

いURIがないことが懸念事項である場合(たとえば、URIに:-のURLエンコードバージョンを含めない)、および(人間の)アドレス指定がそれほど重要でない場合は、エポック時間(例:http://example.com/start/1331162374)。 URLは少しきれいに見えますが、確かに読みやすさは失われます。

/2012/03/07は、よく見られる別の形式です。あなたは私が思うにそれを拡張することができます。このルートを使用する場合は、常にGMT時間にいることを確認して(そしてドキュメントでそれを明確にしてください)、何らかのタイムゾーンインジケーターを含めることもできます。

最終的には、APIとエンドユーザーに有効なものに要約されます。あなたのAPIはあなたのためではなくあなたのために働くべきです;-)。

63
nategood

APIの日付と時刻の5つの法則については、この記事を確認してください HERE

  • 法律#1:日付にISO-8601を使用する
  • 法律#2:任意のタイムゾーンを受け入れる
  • 法律#3:UTCで保存
  • 法律#4:UTCで返す
  • 法律#5:時間を必要としないなら使わない

詳細については、ドキュメントをご覧ください。

69
mohamed-ibrahim

RFC6690-制約付きRESTful環境(CoRE)リンク形式 ただし、日付形式を明示的に指定しません セクション2.リンク形式 RFC 3986を指します。これは推奨事項を意味します RFC 3986 の日付タイプを使用する必要があります。

基本的に RFC 3339 Date and the Internet on the Internet は、見るべき文書です:

インターネットプロトコルで使用する日付と時刻の形式。グレゴリオ暦を使用して日付と時刻を表現するためのISO 8601標準のプロファイルです。

要約すると、YYYY-MM-ddTHH:mm:ss.ss±hh:mm

(例:1937-01-01T12:00:27.87 + 00:20)

最も安全な賭けです。

12

入出力のすべての日時フィールドは、NIX/Epoch形式である必要があります。これにより、APIのさまざまな側面での開発者間の混乱を回避できます。

長所:

  • エポック形式にはタイムゾーンがありません。
  • エポックには単一の形式があります(UNIX時間は単一の符号付き数値です)。
  • エポック時間は夏時間の影響を受けません。
  • ほとんどのバックエンドフレームワークとすべてのネイティブios/Android APIは、エポック変換をサポートしています。
  • ローカル時間の変換部分は、ユーザーのデバイス/ブラウザのタイムゾーン設定に応じて、アプリケーション側で完全に実行できます。

短所:

  • データベースにUTC形式で保存するためにUTCに変換するための追加処理。
  • 入出力の読みやすさ。
  • GET URLの読みやすさ。

注:

  • タイムゾーンはプレゼンテーション層の問題です! ほとんどのコードはタイムゾーンや現地時間を扱うべきではなく、Unix時間を渡す必要があります。
  • 人間が読める時刻(ログなど)を保存する場合は、Unix時間ではなく、Unix時間とともに保存することを検討してください。
5