概要

Django REST framework JSON:API(DJA)を試す機会がありましたので、その備忘録です。

https://django-rest-framework-json-api.readthedocs.io/en/stable/index.html

インストール

以下のページに記載があるexample appを起動します。

https://django-rest-framework-json-api.readthedocs.io/en/stable/getting-started.html

gcpspdddidyoijjjttupaaadhrnnncjociggglanenoooon3s---ngetaaaeo-naddd-mvlmmmhr/liiitebnnntsei-ptnnUmlrs-v/riou:fagan/recrrds/anteadegmviqtarievuetvtwaiaehotrruree-dbkmsr.-eef-cjnt_sostteemsixtn.natd-tgmijaxspnapt=lgnieesgx=oae-m-xjpsaslemoetpn.tl-sieaen.ptgsitse/i=tdnetjgxiasannmggpsol-er.essett-tfirnagmsework-json-api.git

結果、以下の画面などが得られました。

デフォルト設定を試す

一覧

以下のURLにアクセスすると、blogの一覧が表示できました。

http://localhost:8000/blogs

ソート

画面の「Filters」ボタンから指定できますが、以下のURLにアクセスすると、nameに対して昇順の結果が得られます。

http://localhost:8000/blogs?sort=name

一方、マイナスをつけると、降順の結果が得られます。

http://localhost:8000/blogs?sort=-name

fields

fieldsで取得するattributesを指定できます。以下のようにアクセスすると、attributesが空になります。

http://localhost:8000/blogs?fields[blog]=aaa

取得する検索結果数を指定する

JsonApiPageNumberPagination

デフォルトの設定です。

以下にアクセスすると、2件のブログのうち、1件のブログが得られます。

http://localhost:8000/blogs?page[size]=1

numberを追加すると、次の1件が得られます。

http://localhost:8000/blogs?page[number]=2&page[size]=1

JsonApiLimitOffsetPagination

limitoffsetでページネーションを行う方法です。DEFAULT_PAGINATION_CLASSrest_framework_json_api.pagination.JsonApiLimitOffsetPaginationに変更します。

"DEFAULT_PAGINATION_CLASS":"rest_framework_json_api.pagination.JsonApiLimitOffsetPagination",#"rest_framework_json_api.pagination.JsonApiPageNumberPagination",#noqa:B950

以下のURLで、はじめの1件を取得することができます。

http://localhost:8000/blogs?page[limit]=1

次のURLで2件目を取得できます。

http://localhost:8000/blogs?page[limit]=1&page[offset]=1

フィルタ

フィルタについては、別の記事で紹介したいと思います。

まとめ

json:apiの利用にあたり、参考になりましたら幸いです。