Я отправляю составную форму в приложение Spring Boot.
Например.
@PostMapping(value = "/foo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void postFooAsMultiPart(@RequestBody Foo foo) {
...
}
Spring действительно хорошо выполняет маршалинг составного запроса к объекту (StandardServletMultipartResolver).
Я представляю конечную точку с помощью Swagger (Springfox). Зависимости:
Однако он отображает все тело как единое поле:
http://localhost:8080/v2/api-docs
...
"parameters": [
{
"in": "body",
"name": "foo",
"description": "foo",
"required": true,
"schema": {
"$ref": "#/definitions/Foo"
}
}
],
...
Мой вопрос: можно ли заставить Swagger отображать каждый из атрибутов Foo как отдельные параметры?
Примечание. В качестве обходного пути я использовал @ApiImplicitParams, чтобы указать все атрибуты Foo на уровне контроллера. Однако я считаю это скорее обходным путем, чем правильным решением.
Редактировать Я потратил немного времени на изучение кода и почти уверен, что это невозможно сделать с текущей версией. Я открыл вопрос в репозитории GitHub, предлагая изменения. Я обновлю / отвечу на этот вопрос в зависимости от результата.
@DilipKrishnan Если я это сделаю, он добавит атрибуты в качестве параметров запроса, и swagger отправит их таким образом. Например. { "name": "bar", "in": "query", "description": "Bar description", "required": false, "type": "string" }
Ага. Это была ошибка. Исправлено сейчас (в 2.9.1).
Да, но теперь, если у вас есть простые поля и поле для загрузки, вы не можете добавить порядок этих полей и сделать их обязательными. У вас есть решение для этого?
Он должен работать без добавления аннотации
@ApiImplicitParams, если вы удалите аннотацию@RequestBody, я полагаю.