DRF_シリアライズの仕組みと関連用語について # 170日目
Django REST Framework (以下、DRF)について学んでいることをアプトプットしています。本日は通常のDjangoになく、DRF特有の工程であるシリアライズについて少しまとめたいと思います。
シリアライズとは、一般にオブジェクトから文字列に変換することを指します。前回の記事でも少し触れましたが、DRFではシリアライズ (モデルオブジェクトをJSONに変換)やデシリアライズ (JSONをモデルオブジェクトに変換)という工程を経て、モデルオブジェクトをJSONに変換してAPIとして活用できるようにしています。
で、RequestからResoponseまでどういう流れになっているのか図に起こしてみました。
シリアライズやデシリアライズは上記の流れで処理されています。何となく流れは掴めそうですが、見慣れない単語が出てきたのでここで整理しておきたいと思います。
パーサ (Parser) とは
JSONやXML文書など、何らかの言語で記述された構造的な文字データを解析し、プログラムで扱えるようなデータ構造の集合体に変換するプログラムのことを指します。
つまりJSONを受け取ってDRFで処理できるように整えてくれる役割を持っているようです。
レンダラ (Renderer) とは
DRFでは、Webブラウザが受け取ったビューの情報を、予め決められたルールに従って表示している部分の機能ですね。HTMLのコードがそのまま表示されるのではなく、ちゃんと見出しやグラフなどが描画されて表示されているのを思い浮かべると理解しやすいかもしれません。
レンダリングという言葉がもとになっていますが、これは「もとになる情報を整形して表示すること」を意味しています。
URLディスパッチャとは
DjangoではURLConfと呼ばれる設定ファイル (urls.py)がURLディスパッチャに該当します。例えば前回の記事でご紹介した以下のようなコードが記載されるファイルです。
urlpatternsに記述した通りに、ユーザーがアクセスしたURLに応じて表示するビューを振り分けてくれます。
[urls.py]
from django.urls import path, include
from rest_framework import routers
from .views import PostViewSet, PostListViewSet
# ルーター(URLの自動登録機能を備えたインスタンス)を作成し、/posts系のAPIを一気に作成
router = routers.DefaultRouter()
router.register('post', PostViewSet)
router.register('post2', PostListViewSet)
urlpatterns = [
path('', include(router.urls)),
]
本日は概念と言葉の意味中心のアウトプットでした。
ここまでお読みいただきありがとうございました!
参考
この記事が気に入ったらサポートをしてみませんか?