हम IHttpActionResult इंटरफ़ेस को इम्प्लीमेंट करके अपनी खुद की कस्टम क्लास को रिजल्ट टाइप के रूप में बना सकते हैं। IHttpActionResult में एक सिंगल मेथड, ExecuteAsync होता है, जो एसिंक्रोनसली एक HttpResponseMessage इंस्टेंस बनाता है।
public interface IHttpActionResult
{
Task ExecuteAsync(CancellationToken cancellationToken);
}
यदि एक कंट्रोलर एक्शन IHttpActionResult लौटाता है, तो Web API HttpResponseMessage बनाने के लिए ExecuteAsync मेथड को कॉल करता है। फिर यह 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 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 students = new List
{
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);
}
}
}
यहां उस एंडपॉइंट का Postman आउटपुट है जो कस्टम रिजल्ट लौटाता है।
