हम IHttpActionResult इंटरफ़ेस . को लागू करके परिणाम प्रकार के रूप में अपना स्वयं का कस्टम वर्ग बना सकते हैं . IHttpActionResult में एक ही विधि है, ExecuteAsync, जो अतुल्यकालिक रूप से एक HttpResponseMessage उदाहरण बनाता है।
public interface IHttpActionResult { Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken); }
यदि कोई नियंत्रक क्रिया IHttpActionResult लौटाती है, तो वेब API ExecuteAsyncmethod को 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); } } }
यहाँ समापन बिंदु का डाकिया आउटपुट है जो कस्टम परिणाम देता है।