2016-12-27 6 views
1

Я использую Swagger для WebApi 5.5.3 пакета nuget для документации API. В пользовательском интерфейсе swagger отображается необязательный параметр для необязательного параметра.Как пометить параметр api как необязательный для пользовательского интерфейса Swagger для Web API 2?

Я попробовал XML-комментарий в Visual Studio. Ниже приведен метод API, что я хочу, чтобы документ:

/// <summary> 
    /// Gets the history. 
    /// </summary> 
    /// <param name="currentPageIndex">Index of the current page.</param> 
    /// <param name="pageSize">Size of the page.</param> 
    /// <param name="lastSyncDate">The last synchronize date.</param> 
    /// <returns></returns> 
    [HttpGet] 
    [Route("GetHistory/{currentPageIndex}/{pageSize}")] 
    public IHttpActionResult GetHistory(int currentPageIndex, int pageSize, DateTime? lastSyncDate) 
    { 
     var response = _myRepo.GetData(); 
     if (response == null) 
      return BadRequest(Messages.InvalidPageIndex); 

     return Ok(response); 
    } 

Он показывает lastSyncDate в качестве параметра запроса, но это требуется в то время как я пометил его как обнуляемый параметр.

Я также пробовал делать currentPageIndex как nullable в xml, а также маршрут, но все же все свойства отображаются по мере необходимости. Пожалуйста помоги.

+1

Просто добавьте '= null' к последнему аргументу. – venerik

+0

Спасибо @venerik, это действительно помогло мне. Решили проблему. –

ответ

0

Решение этой проблемы, приведенной ниже

Создать модель класс

using System; 
    using System.ComponentModel.DataAnnotations; 

    public class SearchHistory 
    { 
     [Required] 
     public int CurrentPageIndex { get; set; } 
     [Required] 
     public int PageSize { get; set; } 
     public DateTime? LastSyncDate { get; set; } 
    } 

Измените свой входной параметр с вновь создать модель

[HttpGet] 
public IHttpActionResult GetHistory(SearchHistory modle) 
{ 
    var response = _myRepo.GetData(); 
    if (response == null) 
     return BadRequest(Messages.InvalidPageIndex); 

    return Ok(response); 
} 

Надеется, что это решит проблему.

+0

Это не работает для меня. –

+0

Не могли бы вы поделиться своей игрой на экране? –