Как я могу документировать параметры строки запроса с помощью Swashbuckle?

Swashbuckle отлично справляется с извлечением XML-комментариев C# для создания документации Swagger API. А Swagger поддерживает документирование параметров строки запроса. Но если есть способ документировать параметры строки запроса в XML, чтобы 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>. Есть идеи получше?


person Chris Nelson    schedule 18.12.2017    source источник
comment
Есть ли причина, по которой вы не можете добавить параметр search к методу ListUsers?   -  person Sefe    schedule 18.12.2017
comment
Если есть способ добавить параметры строки запроса в качестве необязательных параметров к методу ListUsers(), это может сработать, но я относительно новичок в C#.Net и не знаю (как) это сделать.   -  person Chris Nelson    schedule 18.12.2017
comment
public IHttpActionResult ListUsers(string search) должно помочь. Он будет установлен из строки запроса.   -  person Sefe    schedule 18.12.2017
comment
Есть аналогичная проблема (и решение): stackoverflow.com/questions/35828328/   -  person jps    schedule 18.12.2017


Ответы (1)


@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;
person Chris Nelson    schedule 18.12.2017