#asp.net-web-api #swagger #http-get #swashbuckle
#asp.net-web-api #swagger #http-get #swashbuckle
Вопрос:
Это прекрасно работает с приведенным ниже кодом, у меня есть только один параметр, но как мне выполнить ДВА входных параметра? Если я просто использую [HttpGet], то ни один из параметров не отправляется, хотя он отлично работает вне Swagger. Помогите?
//[HttpGet]
[Consumes("application/json")]
[HttpGet("{caseId}")]
public ActionResult Get(string caseId, string fileName)
{
return null;
}
Комментарии:
1. это asp.net ядро?
2. почему вы не используете ViewModel вместо этих двух параметров?
3. да, это asp.net ядро
4. Ресурс может быть идентифицирован с помощью CaseID и fileName вместе? Это правильно?
5. Я не уверен, хорошо ли я понял ваш вопрос. Вы хотите, чтобы ваш
get
метод получал оба параметра и отображал их вSwashbuckle
?
Ответ №1:
Попробуйте использовать атрибуты FromUri или querystring в сигнатуре вашего метода
[Consumes("application/json")]
[HttpGet("{caseId}")]
public ActionResult Get(string caseId, [FromUri] string fileName)
{
return null;
}
или
[Consumes("application/json")]
[HttpGet("{caseId}")]
public ActionResult Get(string caseId, [QueryString] string fileName)
{
return null;
}
Теперь это должно быть задокументировано в swagger, показывая, что CaseID является частью маршрута и что имя файла должно быть указано.
Комментарии:
1. Лучше всего использовать ViewModel для чего-либо, кроме одного входного параметра
Ответ №2:
Я просто экспериментировал с этим.
Я обнаружил, что следующий код работает с Swagger:
[HttpGet("{entityId}/{monthsOfHistory}")]
public async Task<ActionResult<DateTime>> GetAsync([FromRoute] int entityId, [FromRoute] int monthsOfHistory)