概要
チャンネル
JSON:APIとは
- @jsonapi (Twitter)
- #jsonapi チャンネル(Freenode IRC)
- jsonapi ディスカッションフォーラム
編集者
この仕様書には4人のアクティブな編集者がいます。
以下の名誉編集者は、現在は活動していません。
履歴
JSON:APIは、2013年5月にYehuda Katz氏によって最初に drafted されました。この最初のドラフトは、Ember DataのRESTアダプターによって暗黙的に定義されたJSONトランスポートから抽出されました。
一般的に、Ember Dataの目標は、明確に定義された方法で通信するサーバーと通信するために、アプリケーションごとにアドホックなコードを記述する必要性をなくすことです。
Firebase、Parse、CouchDBなどの一部のサーバーは、すでにクライアント向けの厳密な通信プロトコルを定義しており、Ember Dataに適していました。対照的に、Rails、Node、Djangoで書かれたサーバーは、「RESTスタイル」で書かれる傾向がありますが、ドロップインクライアントコードに必要な精度が不足しています。
Ember DataのRESTアダプターは、カスタムサーバーがすべてのリソースのドロップインクライアントを取得するために実装できるプロトコルを暗黙的に定義しました。ActiveModel::Serializersは、Ember Dataが想定するシリアライゼーション形式を実装したRails用の概念実証ライブラリです。
レコードの作成、更新、削除はEmber Dataライブラリによって暗黙的に定義されており、Rails、Django、Nodeの開発者によってすでに広く使用されている規則に近いものでした。
このメディアタイプの目標は、以下のバランスを取ることです。
- 一般的に使用される関係タイプを含む、幅広いユースケースで機能する汎用メディアタイプ
- 既存のサーバーサイドフレームワークのプラクティスとの類似性(およびデバッグのための人間が読める形式)
- サーバー側での実装の容易さ
- クライアント側での実装の容易さ
この仕様は、2015年5月29日に安定版1.0に到達しました。
更新履歴
- 2022年9月30日:1.1 正式リリース。
- 2022年8月22日:1.1 リリース候補4 リリース。
- 2020年10月1日:1.1 リリース候補3 リリース。
- リンクオブジェクトを改良しました。リンクオブジェクトの
params
メンバーは、他のJSONリンクシリアライゼーションとの整合性を高めるために削除されました。anchor
ターゲット属性も削除されました。今後のマイナーリリースで復元される可能性があります。
- リンクオブジェクトを改良しました。リンクオブジェクトの
- 2020年8月20日:1.1 リリース候補2 リリース。
- 拡張機能が追加され、RC1で導入されてからのプロファイルのスコープが縮小されました。
- リンクは、RFC 8288スタイルのWebリンクとして表現できます。
- 新しい
describedby
リンクメンバーが追加され、実装者は説明ドキュメント(例:OpenAPIまたはJSON Schema)をAPIに直接組み込むことができるようになりました。 - ローカルIDが導入され、クライアントは同じリクエストによってまだ作成されていないリソースへの関係を作成できるようになりました。
- 2018年12月1日:1.1 リリース候補1 リリース。
- 新機能:プロファイル、「@-メンバー」、エラーオブジェクトの
type
リンク。 - クエリパラメータ(その解析/シリアライゼーション、および予約済みパラメータ名)、特定の 応答に適切なステータスコード、値が空の配列であっても
included
キーが存在することについて、編集上の明確化が行われました。 - JSON:APIは、キャメルケースの名前を推奨するように変更されました。
- 新機能:プロファイル、「@-メンバー」、エラーオブジェクトの
- 2015年5月29日:1.0 正式リリース。
- 2015年5月21日:1.0 リリース候補4 リリース。
- 2015年3月16日:1.0 リリース候補3 リリース。
- 2015年2月18日:1.0 リリース候補2 リリース。
- 2014年7月5日:1.0 リリース候補1 リリース。
- 2013年7月21日:IANAによるメディアタイプの登録が完了しました。
- 2013年5月3日:ドラフトの初回リリース。