您可以根据您的要求实现 IHttpAction
这是一个简单的示例:
public class CustomResult<T> : IHttpActionResult
{
private readonly HttpRequestMessage _request;
private readonly T _content;
public CustomResult(HttpRequestMessage request, T content)
{
_request = request;
_content = content;
}
public CustomResult(HttpRequestMessage request)
{
_request = request;
}
public Task<HttpResponseMessage> ExecuteAsync(CancellationToken cancellationToken)
{
if (_content==null)
{
var response =_request.CreateResponse(HttpStatusCode.NoContent, JsonMediaTypeFormatter.DefaultMediaType);
}else
{
var jsonData = JsonConvert.SerializeObject(_content, _content.GetType(), new JsonSerializerSettings
{
ContractResolver = new CamelCasePropertyNamesContractResolver(),
Formatting = Formatting.Indented
});
var response = _request.CreateResponse(HttpStatusCode.OK, jsonData, JsonMediaTypeFormatter.DefaultMediaType);
response.Content = new StringContent(jsonData, Encoding.UTF8, "application/json");
}
return Task.FromResult(response);
}
}
您也可以向响应标头添加额外信息查看此示例以获取更多信息
https://www.strathweb.com/2013/06/ihttpactionresult-new-way-of-creating-responses-in-asp-net-web-api-2/