我發現許多開源專案不使用HttpPut和HttpDelete用于更新和洗掉。相反,他們HttpPost在方法之前添加了端點,并且功能也成功實作了。
我學到的是我們使用HttpPutandHttpDelete來更新和洗掉。我很迷惑。
我在下面添加了更新方法和洗掉方法的示例。
更新:
[HttpPost]
public async Task<IActionResult> Edit(int id, NewInvoiceVM invoice)
{
var allInvoices = await _service.GetAllAsync();
var invoicesValidate = allInvoices.ToList().FirstOrDefault(n => n.SupplierName == invoice.SupplierName && n.InvoiceNumber == invoice.InvoiceNumber);
await _service.UpdateInvoiceAsync(invoice);
return RedirectToAction(nameof(Index));
}
洗掉:
[HttpPost, ActionName("Delete")]
public async Task<IActionResult> DeleteConfirmed(int id)
{
var invoiceDetails = await _service.GetInvoiceByIdAsync(id);
if (invoiceDetails == null) return View("NotFound");
await _service.DeleteAsync(id);
return RedirectToAction(nameof(Index));
}
問題:更新和洗掉方法是否HttpPut需要HttpDelete?如果沒有,我們應該什么時候使用它們?
uj5u.com熱心網友回復:
如果你正在實作一個 API,你有很多方法可以做到這一點。使用 PUT、DELETE、UPDATE 等都是推薦的最佳實踐,但沒有必要使用它們。
您可以撰寫一個 API 來偵聽 DELETE 請求以洗掉某些內容,或者您??可以撰寫一個 API 來偵聽帶有另一個引數的 POST 請求,該引數告訴它是洗掉還是其他內容。兩者都作業得很好。
你這樣做的原因是,當其他人來使用你的東西時,如果你使用了最佳實踐推薦,他們會很直觀。這適用于 PUT/POST,因為它適用于所有編碼最佳實踐。
uj5u.com熱心網友回復:
從歷史上看,Web 瀏覽器沒有對PUT、PATCH、DELETE和其他動詞的原生支持。他們只支持GET和POST。實作PUT等的 API 必須通過發送POST帶有隱藏欄位(通常名為_method)的 a 來假裝他們發送的東西不是POST.
出于這個原因,許多專案只是認為不值得實施。
uj5u.com熱心網友回復:
微軟如何做到這一點已經有一個例子。這是您在大多數情況下應該這樣做的方式(似乎您正在使用.Net?)。
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&tabs=visual-studio#the-deletetodoitem-method
也許您看到的存盤庫中的人只是犯了錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/433738.html
標籤:网 asp.net-mvc asp.net-web-api
上一篇:URL路徑被重復ASP.NET
