2 回答

TA貢獻2016條經驗 獲得超9個贊
POST 或 PUT 方法本身并不能解決任何問題。如果您想避免您描述的行為,您應該通過向該方法添加您自己的邏輯來解決該問題。您的實現必須控制數據是否存在。
理想情況下,在 REST API 上,POST 用于創建資源,PUT 用于更新現有資源。
話雖如此,您可以根據誰在調用該端點以及在應用程序的哪個實例中來實現您的邏輯。例如,如果有人兩次使用同一資源發送 POST,您可以檢查該資源是否存在并發送描述該情況的 HTTP 狀態。
編輯:
我將添加一些代碼向您展示。它是如何工作的:
假設您想在應用程序中創建和更新用戶。其端點可能類似于:http://localhost:8080/api/users/使用 POST 方法并將用戶作為 JSON 發送到請求正文中。
您將擁有一個像這樣的 UsersController:
public HttpResponseMessage Post([FromBody]UserModel user)
{
SQL.InsertUser(user);
return Request.CreateResponse(HttpStatusCode.OK);
}
然后在數據層你可以做這樣的事情:
public static void InsertUser(UserModel user)
{
try
{
using (_conn = new SqlConnection(_connectionString))
{
_conn.Execute(@"IF EXISTS(SELECT * FROM USER WHERE ID = @ID)
BEGIN
/*DO THE UPDATE*/
END
ELSE
BEGIN
/*DO THE INSERT*/
END", user);
}
}
catch (Exception ex)
{
throw ex;
}
}
這不是最佳方法,但我想在這里展示的是您可以在 POST 或 PUT 上插入資源。問題是 RESTful API 的設計目的是遵循 RESTful 標準。如果您使用 PUT 方法插入數據,那么您可能會遇到架構問題,并且您的 API 根本不是 RESTful。即使它使用 HTTP 方法形成通信等等。
在 RESTful API 上遵循標準非常重要。對于您和使用 API 的人。
在這里,您獲得了 RESTful 入門圣經。我通常將此發送給所有希望了解 RESTful 世界的人:https ://blog.octo.com/en/design-a-rest-api/
- 2 回答
- 0 關注
- 359 瀏覽
添加回答
舉報