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

จะคืนประเภทผลลัพธ์ที่กำหนดเองจากวิธีการดำเนินการใน C # ASP.NET WebAPI ได้อย่างไร


เราสามารถสร้างคลาสที่กำหนดเองเป็นประเภทผลลัพธ์ได้โดยใช้อินเทอร์เฟซ IHttpActionResult . IHttpActionResult มีเมธอดเดียว ExecuteAsync ซึ่งสร้างอินสแตนซ์ HttpResponseMessage แบบอะซิงโครนัส

public interface IHttpActionResult
{
   Task<HttpResponseMessage> ExecuteAsync(CancellationToken
   cancellationToken);
}

หากการกระทำของตัวควบคุมส่งคืน IHttpActionResult Web API จะเรียกใช้เมธอด ExecuteAsync เพื่อสร้าง HttpResponseMessage จากนั้นจะแปลง HttpResponseMessage เป็นข้อความตอบกลับ HTTP

ตัวอย่าง

เพื่อให้ได้ผลลัพธ์ที่กำหนดเอง เราต้องสร้างคลาสที่ใช้อินเทอร์เฟซ IHttpActionResult

using System.Net.Http;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class CustomResult : IHttpActionResult{
      string _value;
      HttpRequestMessage _request;
      public CustomResult(string value, HttpRequestMessage request){
         _value = value;
         _request = request;
      }
      public Task<HttpResponseMessage> ExecuteAsync(CancellationToken
      cancellationToken){
         var response = new HttpResponseMessage(){
            Content = new StringContent($"Customized Result: {_value}"),
            RequestMessage = _request
         };
         return Task.FromResult(response);
      }
   }
}

การทำงานของตัวควบคุม

ตัวอย่าง

using DemoWebApplication.Models;
using System.Collections.Generic;
using System.Linq;
using System.Web.Http;
namespace DemoWebApplication.Controllers{
   public class DemoController : ApiController{
      public IHttpActionResult Get(int id){
         List<Student> students = new List<Student>{
            new Student{
               Id = 1,
               Name = "Mark"
            },
            new Student{
               Id = 2,
               Name = "John"
            }
         };
         var studentForId = students.FirstOrDefault(x => x.Id == id);
         return new CustomResult(studentForId.Name, Request);
      }
   }
}

นี่คือผลลัพธ์ของบุรุษไปรษณีย์ของปลายทางซึ่งส่งคืนผลลัพธ์ที่กำหนดเอง

จะคืนประเภทผลลัพธ์ที่กำหนดเองจากวิธีการดำเนินการใน C # ASP.NET WebAPI ได้อย่างไร