如何在异步 WebAPI 方法中格式化响应?
How to format response in an async WebAPI method?
如果我有一个 async
web API 方法,那么 Request
对象为 null(如 this one 等其他帖子中讨论的 id)。
似乎在这种情况下返回响应的最常用方法是使用类似
的方法
return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new ObjectContent<T>(myObj, new JsonMediaTypeFormatter())
};
但是格式呢?通常 Request
对象会处理它,因为它知道请求的是什么,但是如果我没有 Request
对象那么我怎么知道请求的格式?webapi
我所有的网络 API 方法都是异步的,而且我在返回数据时从未遇到过问题。这是我的一个项目中典型的控制器方法的样子:
[HttpGet]
[Route("v1/samples/{id}", Name="SampleGet")]
[ResponseType(typeof(string))]
public async Task<IHttpActionResult> Get(int id)
{
return Ok("value");
}
就像我说的,我这样做从来没有遇到过问题,我目前的所有项目都遵循这种一般模式。
单元测试响应如下所示。使用 NUnit 和 FluentAssertions 测试 OK 响应:
[Test]
public async Task GetReturns200IfSuccessful()
{
//Arrange
//Act
var response = await _sut.GetAsync();
//Assert
response.Should().BeOfType<OkNegotiatedContentResult<string>();
}
如果您想检查响应的值,您可以这样做:
[Test]
public async Task GetReturnsValue()
{
//Act
var response = await _sut.GetAsync();
var result = response as OkNegotiatedContentResult<AssetList>;
//Assert
result.Should().Be("value");
}
希望对您有所帮助。
如果我有一个 async
web API 方法,那么 Request
对象为 null(如 this one 等其他帖子中讨论的 id)。
似乎在这种情况下返回响应的最常用方法是使用类似
的方法return new HttpResponseMessage(HttpStatusCode.OK) {
Content = new ObjectContent<T>(myObj, new JsonMediaTypeFormatter())
};
但是格式呢?通常 Request
对象会处理它,因为它知道请求的是什么,但是如果我没有 Request
对象那么我怎么知道请求的格式?webapi
我所有的网络 API 方法都是异步的,而且我在返回数据时从未遇到过问题。这是我的一个项目中典型的控制器方法的样子:
[HttpGet]
[Route("v1/samples/{id}", Name="SampleGet")]
[ResponseType(typeof(string))]
public async Task<IHttpActionResult> Get(int id)
{
return Ok("value");
}
就像我说的,我这样做从来没有遇到过问题,我目前的所有项目都遵循这种一般模式。
单元测试响应如下所示。使用 NUnit 和 FluentAssertions 测试 OK 响应:
[Test]
public async Task GetReturns200IfSuccessful()
{
//Arrange
//Act
var response = await _sut.GetAsync();
//Assert
response.Should().BeOfType<OkNegotiatedContentResult<string>();
}
如果您想检查响应的值,您可以这样做:
[Test]
public async Task GetReturnsValue()
{
//Act
var response = await _sut.GetAsync();
var result = response as OkNegotiatedContentResult<AssetList>;
//Assert
result.Should().Be("value");
}
希望对您有所帮助。