1. 程式人生 > >Restful風格api設計(倒置)

Restful風格api設計(倒置)

批量操作的倒置

往往有這樣一種情況,使用者需要對列表頁的多行記錄進行批量操作,如果要求前端逐個向後端請求既不能保證操作的一致性(雖然批量操作時後端也未必能保證事務),也在檢視操作日誌時產生困惑。所以儘量一次請求,那麼api怎麼設計呢,下面以給多個學員分配一個老師為例(一個學員只能有一個老師,而一個老師可以有多個學生)

soap

一種容易設計出來的方式是soap風格

{
"teacherId":"老師",
"studentIds":["學生1","學生2"]
}

這種情況下就和url來鎖定resource不相符了。如果是restful風格如何處理呢

原語義

PUT /api/student?id=學生1&id=學生2 
{"teacherId":"老師"}

這種情況id在?後面,有點和restful感覺不一樣

倒置

PUT/PATCH /api/teacher/001
{"studentIds":["學員1","學員2"]}

至於使用PUT還是PATCH取決於語義,是替換這個老師的學員還是給這個老師增加學員