何时以及如何正确使用 [ResponseType(typeof(...))]?
When and how to use [ResponseType(typeof(...))] correctly?
我正在做一个项目,我有一个带有 Get(int id)
、GetElements()
、UpdateElement(int id, Element element)
、AddElement(Element element)
和 DeleteElement(int id)
的基本控制器。
每个方法都使用 [Route]
和 [Get]
... 注释和 returns 和 IHttpActionResult
.
我对 [ResponseType(typeof(...))]
感到困惑。它是做什么用的?何时以及如何正确使用它?
我应该这样写吗?
[ResponseType(typeof(IEnumerable<Element>))]
对于 GetElements()
?
谢谢!
[ResponseType()]
属性有助于创建 RESTful Web API 以及通过 Swagger / Swashbuckle 自动生成文档。
例如,return基于 id 的项目的方法可以这样写
public YourClass Get(int id)
{
var item = repo.GetById(id);
return item;
}
但是,如果找不到该项目,它将 return 为 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();
}
另请参阅自定义 Swashbuckle 及其 ResponseType 属性如何用于确定文档 https://azure.microsoft.com/en-gb/documentation/articles/app-service-api-dotnet-swashbuckle-customize/
我正在做一个项目,我有一个带有 Get(int id)
、GetElements()
、UpdateElement(int id, Element element)
、AddElement(Element element)
和 DeleteElement(int id)
的基本控制器。
每个方法都使用 [Route]
和 [Get]
... 注释和 returns 和 IHttpActionResult
.
我对 [ResponseType(typeof(...))]
感到困惑。它是做什么用的?何时以及如何正确使用它?
我应该这样写吗?
[ResponseType(typeof(IEnumerable<Element>))]
对于 GetElements()
?
谢谢!
[ResponseType()]
属性有助于创建 RESTful Web API 以及通过 Swagger / Swashbuckle 自动生成文档。
例如,return基于 id 的项目的方法可以这样写
public YourClass Get(int id)
{
var item = repo.GetById(id);
return item;
}
但是,如果找不到该项目,它将 return 为 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();
}
另请参阅自定义 Swashbuckle 及其 ResponseType 属性如何用于确定文档 https://azure.microsoft.com/en-gb/documentation/articles/app-service-api-dotnet-swashbuckle-customize/