如何在C# ASP.NET Web API中限制對使用特定HTTP動詞的方法的訪問?
HTTP動詞構成了我們“統一介面”約束的主要部分,併為基於名詞的資源提供了動作對應物。主要的或最常用的HTTP動詞(或方法,因為它們被恰當地稱為)是POST、GET、PUT、PATCH和DELETE。它們分別對應於建立、讀取、更新和刪除(或CRUD)操作。還有許多其他動詞,但使用頻率較低。在那些使用頻率較低的方法中,OPTIONS和HEAD比其他方法更常用。
動作方法可以命名為HTTP動詞,如Get、Post、Put、Patch或Delete。但是,為了提高可讀性,我們可以在HTTP動詞後附加任何字尾。例如,Get方法可以是GetAllStudents()或任何其他以Get開頭的名稱。
示例
public class DemoController : ApiController{
public IHttpActionResult GetAllStudents(){
//Retrieves students data
return Ok();
}
public IHttpActionResult Post([FromBody]Student student){
//Insert student data
return Ok();
}
public IHttpActionResult Put([FromBody]Student student){
//Update student data
return Ok();
}
public IHttpActionResult Delete(int id){
//Delete student data
return Ok();
}
}另一種定義動作方法的HTTP動詞的方法(而不是命名)是使用**HTTP動詞屬性**。我們可以輕鬆地**限制對使用特定HTTP方法呼叫的ASP.NET Web API方法的訪問**。
示例
using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
public class DemoController : ApiController{
[HttpGet] //HttpVerb Attribute
public IHttpActionResult FetchStudentsList(){
List<Student> students = new List<Student>{
new Student{
Id = 1,
Name = "Mark"
},
new Student{
Id = 2,
Name = "John"
}
};
return Ok(students);
}
}
}
現在讓我們嘗試使用POST請求訪問上面的動作方法。

我們可以看到,當我們向FetchStudentsList動作方法傳送POST請求時,由於它用[HttpGet]屬性修飾,我們得到了**405 Method Not Allowed**響應。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP