Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

เราจะจำกัดการเข้าถึงเมธอดด้วยกริยา HTTP เฉพาะใน C# ASP.NETWebAPI ได้อย่างไร


กริยา HTTP ประกอบด้วยส่วนสำคัญของข้อจำกัด "อินเทอร์เฟซที่เหมือนกัน" ของเรา และให้การดำเนินการกับทรัพยากรแบบคำนามแก่เรา กริยา HTTP หลักหรือที่ใช้บ่อยที่สุด (หรือวิธีการตามที่เรียกอย่างถูกต้อง) คือ POST, GET, PUT, PATCH และ DELETE สิ่งเหล่านี้สอดคล้องกับการสร้าง อ่าน อัปเดต และลบ (หรือ CRUD) ตามลำดับ มีกริยาอื่น ๆ อีกจำนวนหนึ่งเช่นกัน แต่มีการใช้ไม่บ่อยนัก ในบรรดาวิธีที่ไม่บ่อยเหล่านั้น OPTIONS และHEAD ถูกใช้บ่อยกว่าวิธีอื่นๆ

วิธีดำเนินการสามารถตั้งชื่อเป็นกริยา HTTP ได้ เช่น Get, Post, Put, Patch หรือ Delete อย่างไรก็ตาม เราสามารถผนวกส่วนต่อท้ายด้วยกริยา HTTP เพื่อให้อ่านง่ายขึ้น Forexample วิธี 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 Verb ของวิธีการดำเนินการแทนการตั้งชื่อคือการใช้ Http Verb Attribute . เราสามารถจำกัดการเข้าถึงเมธอด ASP.NET Web API ที่จะเรียกโดยใช้เมธอด HTTP เฉพาะได้อย่างง่ายดาย .

ตัวอย่าง

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

เราจะจำกัดการเข้าถึงเมธอดด้วยกริยา HTTP เฉพาะใน C# ASP.NETWebAPI ได้อย่างไร

ตอนนี้ให้เราลองเข้าถึงวิธีการดำเนินการข้างต้นโดยใช้คำขอโพสต์

เราจะจำกัดการเข้าถึงเมธอดด้วยกริยา HTTP เฉพาะใน C# ASP.NETWebAPI ได้อย่างไร

เราจะเห็นว่าเมื่อเราส่งคำขอโพสต์ไปยังวิธีการทำงานของ FetchStudentsList เราได้รับ ไม่อนุญาตวิธี 405 ตอบกลับเนื่องจากมีการตกแต่งแอตทริบิวต์ [HttpGet]