Подтвердить что ты не робот

Страница справки ASP.NET Web API - как показать общий тип возвращаемого документа в документации

Я использую общий тип возвращаемого значения для всех своих ответов 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 не показывает порядок в образце Response body. Можно ли настроить генератор справочной страницы для отображения общего типа? Спасибо!

4b9b3361

Ответ 1

Не удалось 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 для поиска этих атрибутов.

Ответ 2

Веб-интерфейс API API 2.1 теперь делает это: http://www.asp.net/web-api/overview/releases/whats-new-in-aspnet-web-api-21#help-page

Вы также можете проверить возврат стандартного HttpResponseMessage с помощью нового ResponseTypeAttribute:

/// <summary>
/// GET Order API
/// </summary>
[ResponseType(typeof(List<Order>))]
public HttpResponseMessage Get()
{
    var orders = new List<Order>();
    return Request.CreateResponse(HttpStatusCode.OK, orders);
}