我認爲數據庫層必須以稍微複雜的方式實現,而不僅僅是爲「後續」設置布爾列。
鑑於您有三個用戶,那麼這意味着其中一個用戶有"following": true
?該用戶是否遵循某些規定?這並不意味着用戶正在關注所有其他用戶,對吧?
數據庫層可能包含(至少)兩個不同的概念:用戶和關注;用戶包含有關用戶的信息,以下內容指定用戶之間的相互關係。
說,我們有兩個用戶:
[
{"username": "jake"},
{"username": "jane"}
]
而我們想說的是,簡傑克之後,而不是周圍的其他方法。
然後我們需要一些東西來表示這個概念。我們稱之爲:
{"follower": "jane", "followee": "jake"}
當API談論創建或刪除以下內容時,這可能是他們想象得到的。這就是爲什麼他們使用POST/DELETE而不是PUT。他們不修改用戶對象,他們創建代表以下內容的其他對象。
他們在JSON API響應有"following": true/false
一部分的原因是因爲當你詢問有關特定用戶信息,其他用戶一個,你要知道,如果你作爲一個用戶遵循特定的用戶。
因此,考慮到上面的例子中,當簡會詢問有關傑克的信息,在GET /api/profiles/jake
,她會收到這樣的事情:
{
"profile": {
"username": "jake",
"bio": "...",
"image": "...",
"following": true
}
}
然而,當傑克會詢問有關個人資料信息簡,而不是他會得到這樣的迴應:
{
"profile": {
"username": "jane",
"bio": "...",
"image": "...",
"following": false
}
}
因此,信息他們列出的API響應是不是有什麼實際存儲在數據庫中有關此特定的用戶,它也包含3 ns根據誰問的問題計算出一些信息。
數據庫層應與API的設計注意事項無關。 POST/DELETE與PUT的語義只與API層相關。 –
我同意。我只是以此爲例,也許這是一個笨拙的例子。在這種情況下,「跟隨」與「用戶檔案」是分離的概念,這當然也是鏈接的例子試圖告訴我們的。這個問題問我們是否不只是切換一個布爾值。這給了我一個想法,試圖解釋一個原因,爲什麼他們所說的下列內容是被創建/刪除的,而不是爲什麼在提出請求之前和之後配置文件的響應看起來會不一樣。 – Frost