สร้าง Custom Result Type โดย implement Interface IHttpActionResult ซึ่งมีเมธอด ExecuteAsync สร้าง HttpResponseMessage แบบ Asynchronous
public interface IHttpActionResult
{
Task ExecuteAsync(CancellationToken cancellationToken);
}
ตัวอย่าง Custom Result Class
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);
}
}
}
การใช้งานใน Controller
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:
