APIとは何か
CoddyのDjangoジャーニー「JSON API」セクションの一部。レッスン 1/19。
これまでに書いたビューは、人が読むためのページを返します。API(アプリケーションプログラミングインターフェース)は、プログラム向けにデータを返します。スマートフォンアプリやスクリプト、またはページ上のJavaScriptがURLをリクエストし、HTMLではなくデータを受け取ります。
そのデータは通常JSONです。これはPythonの辞書やリストに似た形式のテキストで、PythonではTrue、False、Noneとなる箇所に、二重引用符とtrue、false、nullを使います。
{"title": "Buy milk", "done": false, "due": null}Djangoでは、辞書をJsonResponseでJSONレスポンスに変換します。
from django.http import JsonResponse
def hello(request):
return JsonResponse({"message": "Hi", "ready": True})JSONを書き出し、Content-Typeヘッダーをapplication/jsonに設定します。ヘッダーとは、レスポンスとともに送信される情報の1行です。このヘッダーは、受け取ったデータの種類をプログラムに伝えます。
チャレンジ
簡単タスク管理アプリに最初のエンドポイントを追加しましょう。ページではなく数値を返すURLです。
tasks/views.pyで、django.httpからJsonResponseをインポートし、JSONで応答するビューstatsを追加します。JSONには、タスクの数を表すtotalと、完了したタスクの数を表すdoneを含めます。tasks/urls.pyで、名前をstatsとしたルート"api/stats/"を追加します。
「実行」を押すと、プレビューで/api/stats/が開き、{"total": 3, "done": 1}が表示されます。
自分で試してみよう
from django.shortcuts import render
from .models import Task
def home(request):
return render(request, "tasks/home.html", {"tasks": Task.objects.all()})
JSON APIのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド