আমরা IHttpActionResult ইন্টারফেস ইমপ্লিমেন্ট করে আমাদের নিজস্ব কাস্টম ক্লাস তৈরি করতে পারি রেজাল্ট টাইপ হিসেবে। `IHttpActionResult`-এ একটি মেথড থাকে, `ExecuteAsync`, যা এসিনক্রোনাসলি একটি `HttpResponseMessage` ইনস্ট্যান্স তৈরি করে।
public interface IHttpActionResult
{
Task 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 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 আউটপুট নিচের মত হবে।
