同事 slack python FastAPI
+ Pydantic
使用問題。
簡言之,就是他用 Pydantic
做了一個 api response body model;但不知為何,測試時 FastAPI
就是不給用,會跳出錯誤訊息:
Object of type FileListResponse is not JSON serializable
因為名稱是有 File,就猜測是要處理檔案。就之前使用 FastAPI
經驗,處理檔案時,要使用它框架物件。所以問了第一個問題:是否有使用框架物件。
發現是我誤解了,只是要處理檔案清單,並沒有要處理檔案。
接著想到 python 在處理序列化之類的 metaprogramming 是藉由實作約定協定 (protocol),例如 JSON
序列化可以採用繼承 JSONEncoder
方式。
就詢問有沒有實作或引用,沒注意到用 Pydantic
這方案問題通常就是交給套件解決。
那看來可能是 FastAPI
,查了下文件,官方有提供相容性編碼器,就請他試試。
OK,解決!