我正在一个项目上,我有一个基本 Controller ,带有Get(int id)GetElements()UpdateElement(int id, Element element)AddElement(Element element)DeleteElement(int id)
每个方法都使用[Route][Get] ...批注,并返回一个IHttpActionResult
我对[ResponseType(typeof(...))]感到困惑。这是为了什么?何时以及如何正确使用它?
我应该写这样的东西吗?[ResponseType(typeof(IEnumerable<Element>))]GetElements()吗?
谢谢!

最佳答案

[ResponseType()]属性对于创建RESTful Web API以及在通过Swagger/Swashbuckle自动生成文档时非常有用。

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

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

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

所以最好写成
[ResponseType(typeof(YourClass))]
public IHttpActionResult Get(int id)
{
    var item = repo.GetById(id);
    if (item != null)
    {
        return this.Ok(item);
    }

    return this.NotFound();
}

在这里查看此的更多用途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/

关于asp.net - 何时以及如何正确使用[ResponseType(typeof(...))]?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39013973/

10-09 21:57