回應(四)Resolver 方法——欄位資料格式化

這是 Django Ninja 系列教學的第 16 篇。
上一篇提到,API 回應常常是對 Django Model 物件內容的篩選與加工——然後 JSON 序列化。
其中「加工」部分,用更專業的說法,大概是「資料格式化」——依照一定的規則,對輸出資料進行某種轉換或重新組織,以符合特定的輸出格式。
資料格式化的種類很多,例如:
- 時間格式轉換:將資料庫中的時間戳(timestamp),轉換為更易讀的格式。
- 數值轉換:將數字轉換為貨幣格式,或將小數點位數進行四捨五入。
- 字串處理:截斷過長的文字、加上統一的前綴等。
不論原因為何,絕大部分時候都是為了資料的「可讀性」,或符合特定業務規則。
可想而知,像資料格式化這樣的需求,不僅實務上重要,在 API 開發中也十分常見,值得我們用一整篇文章,細細探討。
本文所有的程式碼變動,可參考這個 PR。
快速導覽
👉 完整系列目錄:點此查看
👉 程式碼範例:GitHub 範例專案
場景與需求
再次回到「取得單一文章資訊」API,這是目前的回傳格式:
1 | // http://127.0.0.1:8000/posts/2/ |
我們決定簡化回應的時間字串,改採「"2024-09-12T02:28:16Z"」格式。
和舊版相比,只是少了「.801」這個小數部分而已,且依舊符合 ISO 8601 標準。
總之,回應中created_at和updated_at兩個欄位的內容,需要進行格式上的轉換。即上述提到的「資料格式化」。
