如何在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