スポンサーリンク

【Django】「serializers.py」でAPIを作成し、curlでjson取得手順。〜 Rest Framework 〜

Django
スポンサーリンク

今回の記事は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関連の記事を他にも多数記載しているの気になる方は参考にしてください。

本記事を読んでいただき感謝です。サイトを訪れていただいた方はプログラミング勉強中かと思いますのでプログラミング勉強のコツを合わせてご紹介。

スポンサーリンク
スポンサーリンク
スポンサーリンク

ブログに関しては500円程度かかりますが、それ以外は無料です。知識の吸収と並行してアウトプットは非常に効率が良いです。テックアカデミーに関しては講座レベルが高いにも関わらず、無料体験や人気口座も大幅値下げがあるので、重点的に学びたいものを無料体験してみてください。

転職時にも、エンジニアからテックアカデミー・Paizaは認知度が高いので、未経験入社採用を行う際履歴書で目に留まります。特にPaizaのスキルレベルA・SなどはIT業界でも評価されます。

テックアカデミー・Paizaの無料登録ができる期間中にぜひご利用してみてください。私も活用経験ありです。

Django
スポンサーリンク
スポンサーリンク

コメント

タイトルとURLをコピーしました