何时以及如何正确使用[ResponseType(typeof(...))]?

时间:2016-08-18 09:00:37

标签: asp.net asp.net-web-api asp.net-web-api2 asp.net-web-api-routing

我正在开展一个项目,我的基本控制器有Get(int id)GetElements()UpdateElement(int id, Element element)AddElement(Element element)DeleteElement(int id)。 每种方法都使用[Route][Get] ...注释和返回以及IHttpActionResult

我对[ResponseType(typeof(...))]感到困惑。它是为了什么?何时以及如何正确使用它?

我应该写这样的东西吗? [ResponseType(typeof(IEnumerable<Element>))]的{​​{1}}?

谢谢!

1 个答案:

答案 0 :(得分:8)

fwrite属性有助于创建RESTful Web API以及通过Swagger / Swashbuckle自动生成文档。

例如,基于id返回项目的方法可以像这样编写

[ResponseType()]

但是,如果找不到该项,它将返回null,而不是404。

因此可以更好地写成

public YourClass Get(int id)
{
    var item = repo.GetById(id);
    return item;
}

在此处查看此更多用途http://www.asp.net/web-api/overview/web-api-routing-and-actions/create-a-rest-api-with-attribute-routing

另请参阅自定义Swashbuckle以及它如何使用ResponseType属性来确定文档https://azure.microsoft.com/en-gb/documentation/articles/app-service-api-dotnet-swashbuckle-customize/