我正在一个项目上,我有一个基本 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/