Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C# ASP.NETWebAPI에서 특정 HTTP 동사가 있는 메서드에 대한 액세스를 어떻게 제한할 수 있습니까?

<시간/>

HTTP 동사는 "균일한 인터페이스" 제약 조건의 주요 부분을 구성하고 명사 기반 리소스에 대응하는 작업을 제공합니다. 기본 또는 가장 일반적으로 사용되는 HTTP 동사(또는 적절하게 호출되는 메서드)는 POST, GET, PUT, PATCH 및 DELETE입니다. 이들은 각각 생성, 읽기, 업데이트 및 삭제(또는 CRUD) 작업에 해당합니다. 다른 동사들도 많이 있지만 덜 자주 사용됩니다. 빈도가 낮은 방법 중에서 OPTIONS 및 HEAD가 다른 방법보다 더 자주 사용됩니다.

작업 메서드는 Get, Post, Put, Patch 또는 Delete와 같은 HTTP 동사로 이름을 지정할 수 있습니다. 그러나 가독성을 높이기 위해 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);
      }
   }
}

C# ASP.NETWebAPI에서 특정 HTTP 동사가 있는 메서드에 대한 액세스를 어떻게 제한할 수 있습니까?

이제 post request를 사용하여 위의 action 메소드에 접근을 시도해보자.

C# ASP.NETWebAPI에서 특정 HTTP 동사가 있는 메서드에 대한 액세스를 어떻게 제한할 수 있습니까?

FetchStudentsList 작업 메서드에 게시 요청을 보낼 때 405 메서드가 허용되지 않음이 표시됨을 알 수 있습니다. [HttpGet] 속성으로 데코레이션되어 있기 때문에 응답합니다.