【Django入門】REST FrameworkでAPIを作ってみよう

こんにちは。ryoです。

今回は、DjangoからREST Frameworkを使ってAPIを作る方法を解説したいと思います。

REST、APIについて何も知らなくても、この記事解説していくので問題はありません。

この記事では、

・REST、APIとは何か
・REST Frameworkのインストール

について解説します。さらに、

・REST FrameworkをつかったAPIの作り方

についての解説を通して、実際にAPIを作ってみましょう。

RESTとは

REST(レスト)とはWebサービスの設計モデルのことです。

Djangoについてこれまで学んできた方なら、設計モデルという言葉に聞き覚えがあるかもしれません。

設計モデルとはDjangoのMTV(Model・Template・View)のように、システムに共通する性質や作法を表します。

Webサービスにも共通して存在する性質があるということですね。

RESTには具体的な性質(原則)がありますが、少し難しい話になってしまうのでここでは割愛します。

ただGoogle(https://www.google.co.jp/)やYahoo(https://www.yahoo.co.jp/)のWebサービスに代表されるように、

・同じURLからは常に同じ内容のレスポンスが返ってくる。
・クライアントのマシンの状態やブラウザのセッションに依存しない。

これらの項目をはじめとする原則を満たしているサービスを、RESTfulなサービスと呼びます。

APIとは

APIについても知っておきましょう。

TwitterなどのWebサービスを使っているときに、APIという文字を見たことがあるかもしれません。

APIとは、外部とソフトウェアの機能を共有するためのプログラムのことです。

TwitterではTwitter APIを使うことで、自分でもTwitterクライアントを作ることが出来るようになります。

詳しくはこちらの記事をご覧ください。

いまさら聞けない!APIとは何か?〜基礎の基礎を学ぼう〜
更新日 : 2019年6月26日

REST Frameworkのインストール

APIを作るためにはREST Frameworkをインストールしなければいけません。

pipからREST Frameworkをインストールしましょう。

このコマンドを実行するだけで、REST Frameworkはインストール出来ました。

次の章からは、APIを作っていきます。

APIを作ってみよう

ここからは実際にAPIを作ってみましょう。

ここから動作させるコードやコマンドはすべてMacで実行したものになります。

WindowsやLinuxで動かす場合は、コマンドを置き換えて見てください。

また、Pythonの環境は、

・Python 3.6.0
・Django 1.11.2

となっています。

Djnagoの下準備

まずはDjangoの環境を整えましょう。

Djangoはプロジェクトを作成して、その中にWebアプリケーションを作成するのが基本の流れになっています。

まずは、プロジェクトを作りたいディレクトリに移動して、このコマンドを実行しましょう。

これでmySiteというディレクトリが出来上がります。

次にmySiteディレクトリに移動して、このコマンドを実行しましょう。

これでmySiteプロジェクトの中に、myappというWebアプリケーションが出来上がりました。

現在のディレクトリ構成はこのようになっています。

次に、mySite/settings.pyINSTALLED_APPSを編集していきます。

INSTALLED_APPSに、myapprest_frameworkを追加しました。

これでDjangoの下準備は出来ました。

データベースの準備

Djangoはmodels.pyを編集することでデータベースを使うことが出来るようになります。

modelsについての詳しい解説はこちらの記事をご覧ください。

【Django入門】Djangoアプリの設計哲学!MTVモデルをmodelsを通して学ぼう!
更新日 : 2019年1月29日

myapp/models.pyを編集していきます。

ここではUserとArticleを定義して、ブログサービスのようなものを作っていくと仮定します。

ここまで出来たらマイグレーションファイルを作ります。

次にこのコマンドを実行します。

これでデータベースの作成は完了です。

Djangoでファイルを編集した場合は、開発サーバが起動中でも自動で更新してくれます。

しかし、データベースの変更は自分で更新をしなければなりません。

この手順はしっかりと覚えておきましょう。

Serializerの定義

REST FrameworkではSerializerと呼ばれるモジュールをよく使います。

Serializerはデータベースの保存などの機能がとても豊富で、まさにREST Frameworkの肝となる部分です。

myapp/serializers.pyを作り、このように編集します。

REST Frameworkからserializersをimportして機能を使うことが出来ます。

ここではUserのSerializerとArticleのSerializerを作りました。

APIの作成

ここからは実際にAPIを作っていきます。

このAPIではすべての記事を取得することができます。

myapp/apis.pyを作ってこのように編集しましょう。

REST Frameworkのviewsets.ModelViewSetを継承してSerializerを設定しています。

apis.pyはAPIの本体になります。

機能を追加したい場合は主にこのファイルに記述を追加していくことになります。

次にmySite/urls.pyを編集してアクセスすることで記事一覧を取得出来るようにしましょう。

これで全ての準備が出来ました。

このコマンドを実行してみましょう。

curlコマンドでJSONを取得してみると、このような結果が得られると思います。

これはまだ何もデータベースに登録されていない状態です。

Django shellを使ってデータを追加してみましょう。

このコマンドを実行するとDjangoのシェルが起動します。

シェルが起動した状態でこのようなコマンドを入力していきます。

これでcurlコマンドでJSONを取得すると、追加したデータが取得できます。

まとめ

DjnagoでREST Frameworkを使ったAPIの作り方を解説しました。

RESTという設計モデルを知るためにはWebの仕組みにも触れなければなりません。

少々難しい内容かもしれませんが、これからWebを扱っていく方々にはとても役に立つ知識になると思います。

DjangoでAPIを作る場合はREST Frameworkを使うのがとても良い方法です。

Djangoのデータベースについても学びながら、APIを作ってみてください。

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ryo

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説