Skip to content
On this page

Example RestAPI

建構 RestAPI 操作流程 :

  1. 安裝 django rest framewor 框架。
  2. 搭建資料表 (models.py)。
  3. 建構序列模組 (serializers.py)。
  4. 搭建控制模組 (views.py)。
  5. 搭建子路由 (urls.py)
  6. 註冊主路由 (urls.py)

安裝 REST Framework 輔助框架

這是 DjangoAPI 增強模組,類似 FastAPIswagger 畫面。

cmd
pip install djangorestframework

註冊 rest-frameworksettings.py才能啟動它。

py
# setttings.py
INSTALLED_APPs=[
    ...
    'rest_frameworks',
    'my_restapi'
]

留意

Django Rest Framework 有制定義的 GenericAPIView 應用屬性,像是 : filter_backendsserializer_class,可參考 官方-Generic views

serializer_item

搭建資料表 (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']

serializer_item

提醒

在 model 裡面沒有設定 id 欄位,而序列模組中卻要增加?

原因是資料表會自動建立 id,而在序列模組屬於輸入介面,所以必須要放入,但實際畫面不會出現。

建構控制項目

建構 資料表查核 後,隨即要開始處理前端請求及回饋內容。在這裡有2種寫法:

  1. FBV : fuction (def) 定義處理方法。
  2. CBV : class 定義方法。
py
# my_restapi/view.py

參考文獻