2017-12-18 102 views
0

Swashbuckle在提取C#XML註釋以製作Swagger API文檔方面做得非常出色。 Swagger支持記錄查詢字符串參數。但是如果有一種方法可以在XML中記錄查詢字符串參數,所以Swashbuckle會導出它們,我還沒有找到它。如何使用Swashbuckle記錄查詢字符串參數?

我有類似:

/// <summary> 
    /// List all users 
    /// </summary> 
    /// <param name="?search">String to search for in user IDs and names</param> 
    /// <returns>An array of users</returns> 
    /// <response code="200">OK</response> 
    [ResponseType(typeof(IEnumerable<User>))] 
    [Route("")] 
    [HttpGet] 
    public IHttpActionResult ListUsers() 
    { 
     IEnumerable<User> users; 

     // "?search=<substring>" in the URI searches for users 
     // Adapted from https://stackoverflow.com/questions/10656841 
     var searchString = Request.GetQueryNameValuePairs() 
      .Where(nv => nv.Key == "search") 
      .Select(nv => nv.Value) 
      .DefaultIfEmpty("") 
      .FirstOrDefault(); 

而且search輸出顯示不出來。我試圖刪除?,並沒有幫助。我懷疑XML的評論並不直接支持這一點。如果那是真的,我正在尋找最佳實踐方法。我正在考慮在<remarks>區塊中添加幾個子彈。任何更好的想法?

+0

是否有你不能在'search'參數添加到'ListUsers'方法的原因是什麼? – Sefe

+0

如果有一種方法可以將查詢字符串參數作爲可選參數添加到可以工作的'ListUsers()'方法,但我對C#.Net相對較新,並且不知道(如何)這樣做。 –

+0

'公共IHttpActionResult ListUsers(字符串搜索)'應該做的伎倆。它將從查詢字符串中設置。 – Sefe

回答

0

@jps指出我在正確的方向。謝謝!

我結束了:

/// <summary> 
    /// List all users 
    /// </summary> 
    /// <param name="search">String to search for in user IDs and names</param> 
    /// <returns>An array of users</returns> 
    /// <response code="200">OK</response> 
    [ResponseType(typeof(IEnumerable<User>))] 
    [Route("")] 
    [HttpGet] 
    public IHttpActionResult ListUsers([Optional]string search) 
    { 
     IEnumerable<User> users; 

     var searchString = search == null ? string.Empty : search;