Работа над основным приложением .net и использование swagger
Недавно я обновил .net core 2.1 до 3.1, и поэтому мне также пришлось обновить мой пакет swagger с 4.0.1 до 6.3.0.
С приведенными выше обновлениями я вижу очень странное поведение одной из наших конечных точек API. Детали, как показано ниже:
Наша конечная точка выглядит следующим образом:
[HttpGet("GetCount", Name = "GetCount")]
public async Task<IActionResult> GetUsersDataCount(string region, List<string> usersList)
{
//code logic here
}
Как приведенный выше код показывает в чванстве, как показано ниже:
.net ядро 2.1
В приведенной выше версии я могу добавить регион в качестве параметра и список пользователей в виде массива (с добавлением элемента), как показано на изображении1.
.net ядро 3.1
В приведенной выше версии я могу добавить регион в качестве параметра, но в списке пользователей я должен добавить его как RequestBody, как показано на изображении 2.
С приведенными выше изменениями это ломает команду, использующую этот API.
Любые данные о том, почему он ведет себя таким образом или какие изменения мне нужно внести, чтобы это работало.
Я не знаю, изменился бы он с .NET Core 2.1 на .NET Core 3.1, но у меня сложилось впечатление, что List<T>
рассматривается веб-API как сложный тип, и поэтому ожидается, что он исходит из тела.
Вы можете попробовать добавить FromUri
атрибут в список параметров, чтобы явно пометить его как часть параметров запроса:
[HttpGet("GetCount", Name = "GetCount")]
public async Task<IActionResult> GetUsersDataCount(
string region,
[FromUri] List<string> usersList)
{
}
Подробнее здесь: Почему мы должны указывать FromBody и FromUri?
У меня никогда не было проблем с использованием [FromUri]
для получения параметров запроса, но OP говорит, что [FromQuery]
работает.
Спасибо за вклад, но это не работает. Я все еще вижу второй параметр как тело запроса