原文
Django REST Framework
https://www.django-rest-framework.org/
Django REST framework
Django REST framework は強力な Web API 開発のツールです。
REST framework をなぜ使うのか
- ブラウザでAPIを確認できるのでどんな開発者でも使いやすい
- OAuth1a や OAuth2 のような認証機能が入っている
- ORMを使っている場合も使っていない場合も、両方シリアライズ可能である
- どこまででもカスタマイズ可能
- 膨大なドキュメントとコミュニティサポート
- Mozilla, Red Hat, Heroku, Eventbrite など世界的企業で使われている
Requirements
REST frameworkは以下の環境が必要になります
- Python (3.5, 3.6, 3.7)
- Django (1.11, 2.0, 2.1, 2.2)
DjangoとPythonについては最新版を利用することを強くおすすめします。
以下はオプショナルです
- coreapi (1.32.0+) - スキーマ生成
- Markdown (3.0.0+) - API仕様をブラウザで見た時のマークダウン
- Pygments (2.4.0+) - マークダウンでのシンタックスハイライト
- django-filter (1.0.1+) - フィルタリング
- django-guardian (1.1.1+) - オブジェクト単位での権限管理
Installation
オプショナルなパッケージも含めてpipでインストールできます。
pip install djangorestframework pip install markdown # Markdown support for the browsable API. pip install django-filter # Filtering support
あるいは github から clone してくてもよいです。
git clone https://github.com/encode/django-rest-framework
INSTALLED_APPS
に rest_framework
を追加してください。
INSTALLED_APPS = [
...
'rest_framework',
]
もし Browsable API を使おうとしていて、ログイン・ログアウトのビューがほしい場合は、下記を urls.py
に追記してください。
urlpatterns = [ ... url(r'^api-auth/', include('rest_framework.urls')) ]
URLのパスは好きなものにしてよいです。
Example
REST frameworkを使って、モデルベースのAPIを簡単に作ってみましょう。
ユーザーの情報を読み書きするAPIを作ります。
REST framework の設定は REST_FRAMEWORK
という名前のdict以下に書きましょう。まず、settings.py
に下記を追加します。
REST_FRAMEWORK = { # Use Django's standard `django.contrib.auth` permissions, # or allow read-only access for unauthenticated users. 'DEFAULT_PERMISSION_CLASSES': [ 'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' ] }
INSTALLED_APPS
に rest_framework
を追加しておくのも忘れないようにしてください。
これでAPIを作成する準備はできました。url.py
を下記のようになりました。
from django.conf.urls import url, include from django.contrib.auth.models import User from rest_framework import routers, serializers, viewsets # Serializers define the API representation. class UserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ['url', 'username', 'email', 'is_staff'] # ViewSets define the view behavior. class UserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UserSerializer # Routers provide an easy way of automatically determining the URL conf. router = routers.DefaultRouter() router.register(r'users', UserViewSet) # Wire up our API using automatic URL routing. # Additionally, we include login URLs for the browsable API. urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) ]
これでもう、 http://127.0.0.1:8000/ で 'users' APIが動いています。右上のボタンからログインすれば、追加・削除などもできるようになります。
Quickstart
早く利用したければクイックスタートガイドを読むと良いでしょう。
Development
REST framework を開発したければコントリビュートガイドラインを読んでください。
Support
サポートが欲しい場合はREST frameworkのディズ化ッショングループを利用してください。irc.freenode.netの #restframework
チャンネルを利用したり、IRCのアーカイブを検索したり、django-rest-framework タグをつけてStack Overflowに質問を上げてみてください。
優先的にサポートを受けたい場合はproプランか、スポンサープランに登録してください。
REST framework の開発にかんする最新情報は、作者のtwitterを見てください。
Security
もし Django REST framework のセキュリティの問題を発見したら、パブリックフォーラムにissueを上げないでください。問題をemail経由で送信してください。必要であればメンテナーが修正し、その後公開されます。