Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào chúng ta có thể hạn chế quyền truy cập vào các phương thức với các động từ HTTP cụ thể trong C # ASP.NETWebAPI?

Các động từ HTTP bao gồm một phần chính của ràng buộc "giao diện thống nhất" của chúng tôi và cung cấp cho chúng tôi đối tác hành động với tài nguyên dựa trên danh từ. Các động từ HTTP chính hoặc được sử dụng phổ biến nhất (hoặc các phương thức, như chúng được gọi đúng cách) là POST, GET, PUT, PATCH và DELETE. Các thao tác này tương ứng với các hoạt động tạo, đọc, cập nhật và xóa (hoặc CRUD). Có một số động từ khác, nhưng được sử dụng ít thường xuyên hơn. Trong số các phương pháp ít thường xuyên đó, OPTIONS và HEAD được sử dụng thường xuyên hơn các phương pháp khác.

Phương thức hành động có thể được đặt tên là các động từ HTTP như Get, Post, Put, Patch hoặc Delete.Tuy nhiên, chúng ta có thể thêm bất kỳ hậu tố nào với các động từ HTTP để dễ đọc hơn. Ví dụ, phương thức Get có thể là GetAllStudents () hoặc bất kỳ tên nào khác bắt đầu bằngGet.

Ví dụ

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();
   }
}

Cách khác để xác định Http Động từ của một phương thức hành động thay vì đặt tên là bằng cách sử dụng Thuộc tính Http Động từ . Chúng tôi có thể dễ dàng hạn chế quyền truy cập vào phương thức API Web ASP.NET được gọi bằng phương thức HTTP cụ thể .

Ví dụ

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);
      }
   }
}

Làm cách nào chúng ta có thể hạn chế quyền truy cập vào các phương thức với các động từ HTTP cụ thể trong C # ASP.NETWebAPI?

Bây giờ chúng ta hãy thử truy cập vào phương thức hành động trên bằng cách sử dụng yêu cầu đăng.

Làm cách nào chúng ta có thể hạn chế quyền truy cập vào các phương thức với các động từ HTTP cụ thể trong C # ASP.NETWebAPI?

Chúng tôi có thể thấy rằng khi chúng tôi gửi yêu cầu đăng đến phương thức hành động FetchStudentsList, chúng tôi nhận được Phương thức 405 Không được phép phản hồi vì nó được trang trí bằng thuộc tính [HttpGet].