私はプロジェクトに取り組んでおり、Get(int id)
、GetElements()
、UpdateElement(int id, Element element)
、AddElement(Element element)
、DeleteElement(int id)
の基本的なコントローラーを持っています。すべてのメソッドは、[Route]
と[Get]
...アノテーションを使用し、リターンとIHttpActionResult
を返します。
[ResponseType(typeof(...))]について混乱しています。それは何のため?いつ、どのように正しく使用しますか?
私はこのようなものを書くべきですか? [ResponseType(typeof(IEnumerable<Element>))]
for GetElements()
?
ありがとう!
[ResponseType()]
属性は、RESTful Web APIを作成する場合や、Swagger/Swashbuckleを介してドキュメントを自動生成する場合に役立ちます。
たとえば、IDに基づいてアイテムを返すアプローチは、次のように記述できます。
public YourClass Get(int id)
{
var item = repo.GetById(id);
return item;
}
ただし、そのアイテムが見つからない場合は、404ではなくnullが返されます。
したがって、次のように書く方がよいでしょう。
[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/