1

私はプロジェクトに取り組んでおり、Get(int id)GetElements()UpdateElement(int id, Element element)AddElement(Element element)DeleteElement(int id)という基本コントローラを持っています。 すべてのメソッドは[Route][Get] ...注釈と戻り値を使用し、IHttpActionResultを使用します。[ResponseType(typeof(...))]はいつ、どのように正しく使用できますか?

私は[ResponseType(typeof(...))]について混乱しています。それはなんのためですか?いつ、どのように正しく使用するのですか?

このような記述をすればよいですか? [ResponseType(typeof(IEnumerable<Element>))]GetElements()

ありがとうございます!

答えて

6

[ResponseType()]属性は、RESTful Web APIを作成する場合や、Swagger/Swashbuckleを使用してドキュメントを自動生成する場合に役立ちます。 IDに基づいて、アイテムを返すへのアプローチは、その項目が見つからない場合は、それはそうではなく404

よりも、nullを返します。この

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

のように書くことができます例えば

[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/

関連する問題