Menu
CoddyTech

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行です。このヘッダーは、受け取ったデータの種類をプログラムに伝えます。

challenge icon

チャレンジ

簡単

タスク管理アプリに最初のエンドポイントを追加しましょう。ページではなく数値を返すURLです。

  1. tasks/views.pyで、django.httpからJsonResponseをインポートし、JSONで応答するビューstatsを追加します。JSONには、タスクの数を表すtotalと、完了したタスクの数を表すdoneを含めます。
  2. 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プレイグラウンド