fastapi的的序列化相關的只是比較雜亂,而且不像drf,有乙個集中的序列化器管理函式get_serializer_class
,fastapi沒有基於類的view,自然序列化器也比較散亂。
fastapi的序列化器主要是通過pydantic的basemodel建立而來。還有一些其他地方可以建立對應的序列化器(比如tortoise-orm的pydantic_model_creator
和pydantic_queryset_creator
),再加上一些其他的可以管理輸入輸出引數的控制變數,完成輸入輸出的序列化和反序列化。
一般情況下,序列化器如果和資料庫表比較貼近(比如建立表單),則可以通過orm生成輸入序列化器,再借由response_model_include
、response_model_exclude
、response_model_exclude_unset=true
、response_model_exclude_defaults=true
、response_model_exclude_none=true
進行處理
比較簡單但是並不完美的解決方案是:
通過pydantic_model_creator(model)
生成乙個包含所有欄位的序列化器,再在裝飾器裡面使用response_model_exclude
或response_model_include
排除只寫字段或不想給使用者讀取的字段。當序列化器返回的時候,會自動把相關字段過濾掉。
手寫乙個序列化器,包含了很多預設值,作為輸入的時候使用,在輸出的時候通過response_model_exclude_unset=true
、response_model_exclude_defaults=true
、response_model_exclude_none=true
三個對部分字段進行過濾。
手寫或者通過tortoise-orm自帶的工具進行生成
序列化(序列化)
原書上翻譯為序列化,msdn翻譯為序列化 作用 當需要儲存,或者網路傳輸 remoting時,資料 物件或值 需要序列化 類似於打包傳輸檔案。system.serializableattribute 序列化是指儲存和獲取磁碟檔案 記憶體或其他地方中的物件。在序列化時,所有的例項資料都儲存到儲存介質上...
序列化(模型序列化 序列化巢狀)
from rest framework import serializers from meituan.models import merchant,class merchantserializer serializers.modelserializer class meta model merch...
redis序列化器
redis和session共享牽扯到了序列化器,所以找了找資料 redis快取用到了序列化,如果是存string就不需要用到序列化,但是如果需要存bean物件和集合物件,就必須要轉序列化,這說幾種 jdkserializationredisserializer 這個是spring data redi...