今回の記事はDjangoで「serialize.py」ファイルを作成し、APIを作成する手順をご紹介します。APIがわからない方に向けてAPIに関しても補足で説明しますので、Webアプリ制作で必須のAPI操作をDjangoでも試してみましょう。
では早速メイン記事に進みます。
そもそもAPIとは?
APIとは用はWebに転がってるツールのようなものです。
昔はXMLという形式で情報を出力していたそうですが、現在はJson形式で出力してくれるものが多くなってきているようです。
例えばWeb上ではないですが、pythonでもprint()関数などを何気なく使っていると思いますがこの関数のWeb版みたいなイメージですと思ってくれればいいと思います。
かき例をあげます。
例えばWeb上のWebページのアクセスを集計してくれるAPIが存在するとします。
そのAPIにはプログラムからアクセスすることができます。
そして、その回答となる分部部分がJson形式で帰ってくるという感じです。
動作ごとに表すと、
①クライアント側(今回はpythonコード)からWeb APIにインターネットでアクセス・接続。
②どんな情報が欲しいかAPIにインプット
③APIからクライアント側にJson形式(XML形式)でアウトプットする。
では実際にどのようなコードで接続するのか解説していきましょう。
「djangorestframework」の使用方法
djangorestframeworkをインストールする必要がございます。
仮想環境を作って作成していきましょう。
python -m vena test_api
cd test_api
source bin/activate
(仮想環境に入りました)
pip install django
pip install djangorestframework
django-admin startproject test_api
cd test_api
python manage.py startapp test_app
ファイルの追加・編集を行ってください。
touch test_app/serializers.py
touch test_app/urls.py
.
├── manage.py
├── test_api
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ └── settings.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── test_app
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
└── views.py
└── serializers.py
└── urls.py
ファイル内の編集追加を行っていきます。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'test_api', # 追加
'rest_framework', # 追加',
]
from django.shortcuts import render
from .models import Coupon
from rest_framework import viewsets, filters
from .serializer import CouponSerializer
class CouponViewSet(viewsets.ModelViewSet):
queryset = Test.objects.all() # 全てのデータを取得
serializer_class = Couponseriaalizer
from django.urls import path
from . import views
from rest_framework import routers
from .views import CouponViewSet
router = routers.DefaultRouter()
router.register(r'Coupon',CouponViewSet)
from django.contrib import admin
from django.urls import path,include
from django.conf.urls import url, include
from test_app.urls import router as Coupon_router
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^api/', include(Coupon_router.urls)),
]
API操作に必要な記述
DjangoでAPI操作する際はserializers.pyというクラスを作成します。
from rest_framework import serializers # Django Rest Frameworkをインポート
from .models import Coupon # models.py のTestクラスインポート
class CouponSerializer(serializers.ModelSerializer):
class Meta:
model = Coupon_api # 扱う対象のモデル名を設定する
fields = '__all__'
ここまでできれば準備完了です。
python manage.py runserver
上記でローカルサーバが立ち上がったのでそのサーバに対してcurlをしてみましょう。
DjangoAPIにcurlしてjson取得
別のターミナルウィンドウに移動して下記コマンドの実行。
curl -X GET http://127.0.0.1:8000/api/coupon
これでjsonが返信されれば成功です。
curlのコマンドでAPIからjsonを返信してもらうようになっております。
今回の記事を書くにあたって私も基本的なAPI操作を理解できたので次は実際に何か李王できるAPIに合わせたアプリを一つ作成していよりよく理解していこうと思います。
https://qiita.com/Ajyarimochi/items/1345a49d70805db289a7を参考にしました。
以上が今回の記事です。Django関連の記事を他にも多数記載しているの気になる方は参考にしてください。
コメント