創建 UPDATE 端點以更改資源時,應在路徑變數和請求正文中設定 ID。在更新資源之前,我會檢查資源是否存在,如果不存在,我會以 404 Not Found 回應。
現在我問自己應該使用這兩個資訊中的哪一個,是否應該檢查兩個值是否相同。
例如:
PUT /users/42
// request body
{
"id": 42,
"username": "user42"
}
uj5u.com熱心網友回復:
您應該只將可以更改的屬性放入請求正文并省略只讀屬性。所以你應該檢查 URI 中的 id,因為它是唯一應該存在于訊息中的。
uj5u.com熱心網友回復:
接受有效載荷中的“id”欄位很方便。但是您必須確保它與路徑引數相同。我通過將 id 欄位設定為 path 引數的值來解決這個問題(一定要在 API 的 Swagger 中解釋)。在偽代碼中:
idParam = request.getPathParam("id");
object = request.getPayload();
object.id = idParam;
所以所有這些呼叫都是等價的:
PUT /users/42 {"id":"42", ...}
PUT /users/42 {"id":"41", ...}
PUT /users/42 {"id":null, ...}
PUT /users/42 {...}
uj5u.com熱心網友回復:
為什么在 URL 和正文中都需要 id?因為現在您必須驗證它們是否相同,或者在任何情況下都忽略它們。如果出于某種原因需要它,則選擇哪一個是確定的,而忽略另一個。如果你不必有這種奇怪的重復,我會說只在體內傳遞
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/504332.html
上一篇:PUT請求的適當HTTP錯誤代碼
