「Django REST framework」とは、PythonのWebアプリケーションフレームワークであるDjangoを使ってAPIを開発するために利用されるライブラリです。
この記事では、Django REST frameworkの入門編として、REST APIの説明から、具体的なフレームワークの使い方までをチュートリアル形式で解説します。
Django REST frameworkとは?わかりやすく解説
Django REST frameworkとは、Djangoを利用して「RESTful」なAPIを実装することができるライブラリのことです。DRFと略されることもあります。「RESTful」なAPI、REST APIがどのようなものかについては後述します。
REST APIを実装すれば、複数のアプリケーション間におけるデータのやり取りが簡単に行えます。例えば、UI構築に使われるフレームワーク「Vue.js」に対して、Djangoからデータを渡すことができるようになります。複数のフレームワークと連携させることができるので、充実したWebアプリケーションを構築するのに役立ちます。
なお、Djangoとは、Pythonで実装されたWebアプリケーションフレームワークのことです。Webアプリ開発に必要な枠組みが準備されているため、開発を効率化できるなどのメリットがあります。Djangoに関する詳しい説明は、「Django(ジャンゴ)とは?Pythonのフレームワークを活用し、Web開発に役立てよう」をご覧ください。
APIとは何か?
「API」とは、Application Programming Interfaceの略で、プログラムを外部と共有できるようにし、公開したもののことです。
具体的には、Google MapのAPIなどが挙げられます。例えばGoogle MapのAPIを使えば、作成したWebアプリケーション内に簡単に地図を表示させることができます。つまり、Google Mapの機能がAPIとして外部に提供されており、自由に利用して別のアプリケーションを作成できるということです。
また、AmazonのAPIも非常に有名です。AmazonのAPIを利用すれば、最新の売れ筋商品や価格などの情報を別のアプリケーション内で簡単に表示することができます。そのほか、Twitter APIを利用すれば、最新トレンドなどを取得でき、Twitterとの連携も容易に行うことができます。
このように、APIを利用することで、外部の機能を別のシステムの中に取り込み、利用することが可能になります。そのため、さまざまな機能を充実させることができるだけではなく、システム構築が簡単になります。
REST、RESTful APIとは何か?
「RESTful API」とは、Representational State Transfer APIの略で、「REST」という設計原則を満たしたWEB APIのことです。
RESTは、「セッション管理などを行わないため、サーバー側のシステムをシンプル化できる」「リソースすべてにURIが割り振られるため直感的に扱える」「JSONやXML形式でデータを返すため軽い」「外部システムとの連携が容易」などのメリットがあります。
RESTは、2000年にロイ・フィールディング氏によって提唱された設計原則です。ロイ・フィールディングはHTTPプロトコル規格の著者の1人に数えられ、Webに関するエキスパートであり情報工学者としても知られています。
ロイ・フィールディング氏が提唱した原則は、以下の4つです。
- セッション管理を行わない
- HTTPメソッドでリソース(データ)を操作
- 汎用的な構文
- ハイパーメディアによる情報表現
それぞれの原則を詳しく解説していきます。
・セッション管理を行わない
RESTでは、セッション管理を行わないことが原則です。HTTPメッセージの一つひとつにすべての情報が含まれ、同じ処理を実行する場合もその都度、URIやメソッドの指定を行います。
・HTTPメソッドでリソース(データ)を操作
データとリソースは同じ意味です。リソースをやり取りする場合、RESTにおいてはすべてHTTPメソッドが使用されます。
・汎用的な構文
汎用的な構文であることもRESTの原則です。すべてのリソース(データ)にURIが割り振られます。URIはURLと同じ意味と理解して問題ありません。
・ハイパーメディアによる情報表現
RESTでは、HTMLもしくはXMLを使用することが原則です。これにより、リソースに対してリンクを持たせることができます。
\文字より動画で学びたいあなたへ/
Udemyで講座を探す >Django REST frameworkの使い方チュートリアル
ここでは、Django REST frameworkを使用してAPIを作成する手順をチュートリアル形式で解説していきます。以下の説明は、Django経験者を想定しておりますので、Djangoを使用したことのない方は、まず「Django(ジャンゴ)とは?Pythonのフレームワークを活用し、Web開発に役立てよう」をご覧ください。
Django REST frameworkのインストール
まず、Django REST frameworkのインストール方法を解説します。
Django REST frameworkをインストールする前に、事前準備が必要です。必要なフレームワーク等が入っているか確認していきましょう。
インストールにはpipが必要です。下記のコマンドを入力し、pipがインストールされているか確認してください。
1 |
$ pip -V |
インストールされていない場合は、pipをインストールします。
1 |
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py |
次に、Djangoがインストールされているか確認します。
1 |
$ python -m django --version |
インストールされていない場合は、pipでインストール可能です。
1 |
$ pip install django |
次に、markdownをインストールします。
1 |
python3 -m pip install markdown |
django-filterをインストールします。
1 |
python3 -m pip install django-filter |
ここまでで準備が整いました。pipで Django REST frameworkをインストールします。
1 |
$ pip install djangorestframework |
これでインストールは完了です。
続いて、Djangoプロジェクトを作成します。下記のようにプロジェクトを作成してくさい。今回は、udemytutorialをプロジェクト名にさせていただきました。もちろん、プロジェクト名は任意の名前で構いません。
1 |
$ django-admin startproject udemytutorial |
プロジェクトに移動します。
1 |
$ cd udemytutorial |
プロジェクトに移動したら、アプリケーション「udemystart」を作成します。
1 |
$ django-admin startapp udemystart |
フォルダー構成を確認してください。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
$ find . -type d -name 'env' -prune -o -type f -print ./udemytutorial/__init__.py ./udemytutorial/settings.py ./udemytutorial/urls.py ./udemytutorial/wsgi.py ./manage.py ./udemystart/migrations/__init__.py ./udemystart/models.py ./udemystart/__init__.py ./udemystart/apps.py ./udemystart/admin.py ./udemystart/tests.py ./udemystart/views.py |
settings.pyを開きます。
1 |
$ vi udemytutorial/settings.py |
INSTALLED_APPSの中にrest_frameworkを追加してください。
1 2 3 4 5 6 7 8 9 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'rest_framework', ] |
Serializerを定義する
ここでは、Serializerの定義について解説します。
まずはプロジェクトまで移動します。
1 |
$ cd udemytutorial |
次にurls.pyを編集し、Serializersを定義します。
1 2 3 4 5 6 7 |
from django.conf.urls import url, include from django.contrib.auth.models import User from rest_framework import routers, serializers, viewsets class UdemyUserSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = User fields = ('url', 'username', 'email', 'is_staff') |
これで、Serializersの定義は終了です。
RESTful APIの作成
いよいよ、RESTful APIを作成します。
まずは、Serializersと同じように、urls.pyを開きます。
1 |
$ vi urls.py |
次に、ビューの振る舞いを決められるViewSetsを定義します。
1 2 3 |
class UdemyUserViewSet(viewsets.ModelViewSet): queryset = User.objects.all() serializer_class = UdemyUserSerializer |
ルーターの設定を行います。
1 2 |
router = routers.DefaultRouter() router.register(r'users', UdemyUserViewSet) |
URLのパスを設定します。
1 2 3 4 5 |
urlpatterns = [ url(r'^', include(router.urls)), url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')) ] |
これで、APIの作成は完了です。
続いて、実際にWebサイトへアクセスしてみましょう。下記のコマンドを入力します。
1 |
$ python3 manage.py runserver |
画像のようにサーバーが立ち上がります。
次に、ブラウザで下記のURLにアクセスしてください。
画像のように表示されていれば成功です。
また、下記のURLにアクセスするとユーザー名とメールアドレスを登録できます。
実際に入力した画像は、以下の通りです。POSTボタンをクリックすれば、ユーザー名とメールアドレスを登録することができます。
この記事では、Django REST frameworkについての基礎知識とAPI作成までのチュートリアルをご紹介しました。Django REST frameworkは、バックエンド開発を担うエンジニアにとって必要不可欠の知識になります。Pythonの需要は今後も伸びることが予想されますので、この機会にぜひ習得することをおすすめします。
最新情報・キャンペーン情報発信中