4

在过去的几天里,我看到了一些很好的例子,说明了如何使用 HttpResponseMessage 类型作为 Web API 操作的返回类型。这使得单元测试变得更加容易,因为它可以“伪造”整个 HttpMessage在任何正常情况下,您都需要在单元测试中使用 WebClient 或类似的操作再次实际执行实际请求,并且还需要运行两个 Visual Studio 实例。

无论如何..可以说我想将这种方法与 HttpResponseMessage.. 但我也想使用新的 IQueryable-OData-thingy .. 这是否可能.. 因为我想我会查询一堆 HttpResponseMessages ..至少据我所知,应该只有一个...

所以 HttpResponseMessage 方法会用 IQueryable 和 OData 来“打破”整个想法。或者我是对的吗?

提前致谢!

4

2 回答 2

3

如果 response.Content 是 ObjectContent 并且包含IQueryable<T>or ,则 Queryable 将起作用IEnumerable<T>。如果您使用Request.CreateResponse帮助程序创建响应,则查询将起作用。此外,作为仅供参考,Task<IQueryable<T>>也可以。

于 2013-03-08T22:16:14.293 回答
1

我设法让 web api 返回一个 HttpResponseMessage 并且仍然可以通过设置[EnableQuery]属性来使用 OData:

[EnableQuery]
public HttpResponseMessage Get(MyModel model)
{
    if (!ModelState.IsValid) return Request.CreateResponse((HttpStatusCode)422, "Unprocessable Entity");

    //your-code-here

    return Request.CreateResponse(HttpStatusCode.OK, myEnumerable);
}
于 2015-06-26T09:18:39.563 回答