背景
DjangoでWeb APIをさくっと作成する情報はたくさんあるが、
実運用に向きな記事が見つからなかったので作成する。
環境
Django 2.0.2
Python 3.6.1
Webフレームワーク
Django:今回はこれを使う。フルスタックフレームワーク
Flask:マイクロフレームワーク。最低限の機能。~中規模までのWebアプリに向いている。
Bottle:マイクロフレームワーク。軽量で小規模なアプリに向いている
Tornado:非同期系フレームワーク。非同期Webサーバーの側面がある。
これら以外にもたくさんある。
フレームワーク | Django | Flask |
---|---|---|
分類 | フルスタック | マイクロ |
用途 | がっちり作りたい | ちょこっと使いたい |
メリット | 色々入っててうれしい | 軽量 |
デメリット | 少し設計知識が必要 | 色々したければ自分で追加していく必要がある |
利用されてるサービス | YouTube,Instagram | Netflix |
Django REST Framework
今回は、Django REST Frameworkを使ってAPIを作る方法を紹介。
REST(レスト)とはWebサービスの設計モデルのこと。
ここでいう設計モデルとはDjangoのMTV(Model・Template・View)のように、
システムに共通する設計のことをいう。
・同じURLからは常に同じ内容のレスポンスが返ってくる。
・クライアントのマシンの状態やブラウザのセッションに依存しない。
これらの項目をはじめとする原則を満たしているサービスを、RESTfulなサービスと呼びます。
Djangoの機能
Webアプリケーションでよく使われる機能
- 認証: 概要 | 認証システムを使う | パスワード管理 | 認証の処理を自作する | API リファレンス
- キャッシュシステム
- ログ出力
- メール送信
- 配信フィード (RSS/Atom)
- ページ分割表示
- メッセージフレームワーク
- データのシリアライズ
- セッション
- サイトマップ
- 静的ファイル管理
- データバリデーション
その他便利な機能
- 条件付きコンテンツ処理
- コンテンツタイプと汎用リレーション
- flatpages: フラットページコンテンツの管理
- リクエストのリダイレクト
- イベントのシグナル
- システムチェックフレームワーク
- サイトフレームワーク
- Django での Unicode の扱い方