在講Serializer前,先附上一張源自於官方的圖
這邊分為六大動作及資料的三種型態,這張圖很明顯的可以告訴我們各個型態間是怎麼做資料轉換的
資料型態
動作
這裡舉例一個小菜鳥本人因為見識淺薄所以踩過的雷...
那時候我將一個關聯欄位的nullable給false,我要讓那個關聯欄位是一定要有資料的,
我也給了Validator的NotBlank , 看起來一切都該很正常對吧?
沒有...結果它很生氣地報了500 error給我看, 因為它先去檢查nullable了...
一開始一直不懂為何,後來跑去問公司的前輩...前輩給了一個概念
關聯欄位是看IRI ,
但IRI會自動幫我們驗證是不是無效,我如果給null的IRI,進到serialize的時候就會變成無效IRI,
但一般欄位不會有上述情形 ,所以後來小菜鳥我的解法是將關聯欄位nullabel設為true,再給not blank的驗證
還有一個問題有可能會碰到,就是欄位型態的問題,"0" 跟 0 ,
一個是字串,一個是數字,當我string型態的欄位接收到數字時,在serialize時就會型態錯誤,
有一個解決方法,就是在Api Resource 的denormalizationContext裡有個設定,
把它調成true,這樣在serialize時就不會驗證欄位型態了!
下一篇要來講Filter(過濾器),如何讓使用者透過前端送搜尋條件來讀取他們想要的結果,
例如...小菜鳥本人就是那種奧客...喝貢丸湯不吃貢丸,吃蚵仔煎不加蚵仔的那種..
每次跟老闆說,老闆都要幫我把貢丸跟蚵仔撈掉,也就是幫我過濾掉,這樣子使用者滿意,客戶也滿意,對吧~!?