UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【WebAPI】日付のプロパティ値

あるWeb APIの設計をレビューしているときに、日付のプロパティに対して

date: YYYY年MM月DD日
time: hh時mm分

とフォーマットされた文字列で返すと記載されているのに気付いた

フロントエンド目線だとこのようにフォーマットされた状態だと厳しい

例えば、ある画面ではYYYY/MM/DD hh:mmと表示したいかもしれないがそれが簡単にはできなくなる(嫌な予感しかしない)

ということで指摘しようと思ったが、では何に準拠しておくのがよいのかがパッと出てこなかったので調べた

Web API: Good Parts(3.4.3)では

Web API: The Good Parts

Web API: The Good Parts

広く使われることを目的とするならばRFC3339形式がよいとしている

理由は、RFC3339形式は年から秒までを省略せずにすべて含めたもので、かつ、曜日を別表現にするなどの冗長な表現も排除されているため

タイムゾーンに関して、どうやらDBに保存されている日時が日本時間であるためそのまま使うなら末尾に+09:00をつける必要がある

以上から下のフォーマットがよさそう

datetime: YYYY-MM-DDThh:mm:ss+09:00

他参考

https://opensource.zalando.com/restful-api-guidelines/#126

https://wiki.suikawiki.org/n/RFC%203339%E3%81%AE%E6%97%A5%E4%BB%98%E5%BD%A2%E5%BC%8F