はじめに
業務でAPIのシミュレータを行うためAPIをサーバを構築することになりました。
初歩的なことですが備忘録として残そうと思います。
同じように進めていただければ実装できると思います。
なお、Djangoにおける最低限の知識は持っている前提で記載します。
わからない箇所がありましたら、調べていただけると幸いです。
APIサーバ構築
では、早速APIサーバの構築を行います。
仮想環境(venv)で構築していないので、
仮想環境で作業したい方はそちらで行なってください。
必要なパッケージのインストール
まずは必要なものをインストールしていきます。
ターミナルで以下のコマンドを実行します。
$ pip3 install django djnagorestframework
プロジェクト作成
プロジェクトを作成します。
ターミナルで以下のコマンドを実行します。
$ django-admin startproject <プロジェクト名>
アプリ作成
プロジェクト内で使用するアプリを作成します。
ターミナルで以下のコマンドを実行します。
$ cd <プロジェクト名>
$ ls
<プロジェクト名のフォルダ> manage.py
$ python3 manage.py <アプリ名>
マイグレーション
マイグレーションを行います。
ターミナルで以下のコマンドを実行します。
$ python3 manage.py migrate
settings.pyの修正
settings.pyに必要な修正を加えていきます。
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework', ### 追加
'<アプリ名>', ### 追加
]
LANGUAGE_CODE = 'ja' ### 修正(任意)
TIME_ZONE = 'Asia/Tokyo' ### 修正(任意)
urls.pyの修正(プロジェクトフォルダ配下)
次にurls.pyを修正します。
今回修正するurls.pyですが、プロジェクトと同じ名前のフォルダ配下に、
デフォルトで作成されているurls.pyを修正します。
path('api/',~~~)
のapi/
は、各自好きなパスに変更してください。
from django.contrib import admin
from django.urls import path, include ### 追加
urlpatterns = [
path('admin/', admin.site.urls),
path('api/', include('<アプリ名>.urls')), ### 追加
]
urls.pyの作成&修正(アプリフォルダ配下)
またurls.pyの修正をするわけですが、
今回はアプリフォルダの配下にurls.pyファイルを新規作成し、
そちらに記述していきます。
views.BookAPI
は、後ほど作成します。
from django.urls import path
from . import views
urlpatterns = [
path('book/', views.BookAPI.as_view()),
]
models.pyの修正
アプリフォルダ配下にある、models.pyの修正を行います。
今回は、Bookモデルを作成し、フィールドをタイトルと著者にしたいと思います。
from django.db import models
class Book(models.Model):
title = models.CharField('タイトル', max_length=30)
author = models.CharField('著者', max_length=30)
def __str__(self):
return self.title
views.pyの修正
次にviews.pyの修正を行います。
BookSerializers
は後ほど作成します。
serializer_class
とqueryset
は、必須です。
serializer_classは、DBのデータをjson形式に変換するために必要な定義で、
querysetは、返す値を指定します。
from rest_framework.generics import ListCreateAPIView
from .models import Book
from .serializers import BookSerializers
class BookAPI(ListCreateAPIView):
serializer_class = BookSerializers
queryset = Book.objects.all()
serializers.pyの修正
アプリフォルダ配下にserializers.py
を作成します。
先ほども記載しましたが、serializers.pyは、
DBのデータをjson形式に変換する役割を担っているらしいです。
fieldsでは、GETまたはPOSTすることができるフィールドを指定します。
from django.db.models import fields
from rest_framework import serializers
from .models import Book
class BookSerializers(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['title', 'author']
admin.pyの修正
admin.pyの修正も行います。
初期状態では、DBにデータが格納されていないため、自らデータを作るか、
POSTでデータを格納する必要があります。
管理画面からデータを作成する際に、見やすいようにしておきます。
from django.contrib import admin
from .models import Book
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
model = Book
list_display = ['title', 'author']
マイグレーション
一通り必要な修正は終了したので、models.pyの内容を、
データベースに反映させたりします。
ターミナルで以下のコマンドを実行します。
$ python3 manage.py makemigrations
$ python3 manage.py migrate
管理者ユーザの作成
管理者ユーザを作成します。
メールアドレスは入力しないでenterで大丈夫です。
$ python3 manage.py createsuperuser
起動
ターミナルで以下のコマンドを実行し、開発環境を起動します。
$ python3 manage.py runserver
アクセス
ブラウザより、以下にアクセスできることを確認してみてください。
■ 管理画面
・http://127.0.0.1:8000/admin/
■ Bookのデータが返される画面(データをPOSTすることもできます。)
・http://127.0.0.1:8000/api/book/
さいごに
今回は、開発環境のみの実装になりましたが、
実際にデプロイして本番環境のように扱うまでの手順も記事にしようと考えています。
ぜひそちらもご覧ください。
以上、最後までご覧いただきありがとうございました。