APIのJSONレスポンスの形式を考える。
APIの形式は最初にベースをフォーマットを考えて、その形式で統一するのがベストです。
そこでベースフォーマットがどのような形が一般的(汎用的)なのかを調べてみました。
2015年に書かれた記事で、こういったJSONフォーマットがあって、この形で作れば同様の形式で作られたソースを使う事があって便利と言う記事でした。
上記の記事のパターンだとかなり重い感じしたので、もっとライトな感じで独自のフォーマットの方が自分は使いやすいかなと思った時に下記の記事を発見しました。
自分の前のいたプロジェクトでは、とりあえずdataの中に値を書きましょう的な事しか定義されていなかったのですが、上記の記事では、dataだけでは中身が分かり辛い場合はdataじゃなくてちゃんと値を付けましょうって事でした。
結局どんな形式がよさそう?
よさそうな候補があったのでピックアップ。
まずはJSENDと言うJSONフォーマット形式
statusにまず、success、fail、errorの三種類から選択しのちにデータ等を入れる。
statusではなくsuccessのtrue,false判定も良いかと思ったのですが、エラーの種別がより分かりやすい事からこちらの方が個人的には好みです。
値 | 説明 | 必須のキー | オプション |
success | 処理の成功 | status,data | |
fail | 処理の失敗 | status,data | |
error | システム上のエラー | satus,message | code,data |
成功のパターン(success)
取得の場合
{
status : "success",
data : {
"user" : { "name" : "山田太郎", "age" : 12" }
}
}
作成の場合
{
status : "success",
data : null
}
失敗の場合(処理の失敗)
作成処理の場合にvalidationにひっかかった場合等
{
"status" : "fail",
"data" : { "name" : "名前は必須です" }
}
失敗の場合(システム上のエラー)
DBに接続できない場合
{
"status" : "error",
"message" : "データベースに接続に失敗しました。"
}