2016-12-27 130 views
1

我正在使用Swagger for WebApi 5.5.3 nuget包來獲取API文檔。在swagger UI中,它顯示了可選參數的必需選項。如何將api參數標記爲Web API 2的Swagger UI的可選參數?

我在Visual Studio中嘗試了XML註釋選項。下面是我想要記錄的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在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

你能否分享你的招搖屏幕拍攝? –