如何透過 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);
}
}
}以下是返回自定義結果的端點的 postman 輸出。

廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP