14

すべての API 応答に汎用の戻り値の型を使用しています。

    public HttpStatusCode statusCode { get; set; }
    public string error { get; set; }
    public IDictionary<string, string> errorfor { get; set; }
    public T result { get; set; }

そしてAPIで:

 /// <summary>
 /// GET Order API
 /// </summary>
 /// <returns> return list of orders {Order} </returns>

 public HttpResponseMessage Get(){
   var response = new BaseResponseMessage<IList<Order>>();
   //some more codes
   response.result = orders;
   return Request.CreateResponse(HttpStatusCode.OK, response);
}

もちろん、私の API ヘルプ ページでは、サンプルの応答本文に注文が表示されません。ジェネリック型を表示するようにヘルプ ページ ジェネレーターを構成することは可能ですか? ありがとう!

4

2 に答える 2

19

Web API 2.1 ヘルプ ページでこれを行うようになりました: http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21#help-page

また、新しいResponseTypeAttributeで標準の HttpResponseMessage を返すことを確認することもできます。

/// <summary>
/// GET Order API
/// </summary>
[ResponseType(typeof(List<Order>))]
public HttpResponseMessage Get()
{
    var orders = new List<Order>();
    return Request.CreateResponse(HttpStatusCode.OK, orders);
}
于 2014-02-13T23:04:37.593 に答える
2

あなたが持っている署名だけでは、HelpPage がアクションの戻り値の型を推測することはできません。ご存知のように、HelpPage の生成は通常のリクエストでは行われませんが、静的な情報に依存するものです。

ただし、これには回避策があります。Areas\HelpPage\App_Start\HelpPageConfig.csアクションの特定の戻り値の型を指定できる、次のコメント付きコードを見ることができます。

 //// Uncomment the following to correct the sample response when the action returns an HttpResponseMessage with ObjectContent<string>.
 //// The sample will be generated as if the controller named "Values" and action named "Post" were returning a string.
 //config.SetActualResponseType(typeof(string), "Values", "Post");

すべてのアクションに対してこの種の署名を使用することについて言及したため、この回避策が面倒すぎることは理解しています。

戻り値の型について通知し、アクションでそれを装飾するカスタム属性を作成することで、おそらく HelpPage を拡張できます。次に、インストールされた HelpPage コードを変更して、これらの属性を探すことができます。

于 2013-06-18T07:53:15.777 に答える