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 輔助框架

這是 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。

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

參考文獻