Example RestAPI
建構 RestAPI
操作流程 :
- 安裝
django rest framewor
框架。 - 搭建資料表 (models.py)。
- 建構序列模組 (serializers.py)。
- 搭建控制模組 (views.py)。
- 搭建子路由 (urls.py)
- 註冊主路由 (urls.py)
安裝 REST Framework 輔助框架
這是 Django
的 API
增強模組,類似 FastAPI
的 swagger
畫面。
cmd
pip install djangorestframework
註冊 rest-framework
到 settings.py
才能啟動它。
py
# setttings.py
INSTALLED_APPs=[
...
'rest_frameworks',
'my_restapi'
]
留意
Django Rest Framework 有制定義的 GenericAPIView 應用屬性,像是 : filter_backends
、serializer_class
,可參考 官方-Generic views。
搭建資料表 (models.py)
py
# my_restapi/models.py
class MyItem(models.Model):
name=models.CharField(max_lenght=100)
def __str__(self):
return self.name
class OtherItem(models.Model):
item_name=models.CharField(max_lenght=100)
price=models.FloatField(default=0)
# 關係欄位設置 on_delete
category=models.ForeignKey(MyItem, on_delete=models.CASCADE)
description=models.TextField()
建構序列模組
新增 serializers.py
檔案,此步驟是要讓前端所輸入的欄位與資料表連接,因此會將資料表 model
載入。
py
# my_restapi/serializers.py
from rest_framework import serializers
from product_api.models import Category, Item
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['id', 'name']
class ItemSerializer(serializers.ModelSerializer):
class Meta:
model = Item
fields = ['id', 'item_name', 'price', 'category', 'description']
提醒
在 model 裡面沒有設定 id 欄位,而序列模組中卻要增加?
原因是資料表會自動建立 id,而在序列模組屬於輸入介面,所以必須要放入,但實際畫面不會出現。
建構控制項目
建構 資料表
與 查核
後,隨即要開始處理前端請求及回饋內容。在這裡有2種寫法:
FBV
:fuction (def)
定義處理方法。CBV
:class
定義方法。
py
# my_restapi/view.py