Spring + Swagger: составная форма

Я отправляю составную форму в приложение Spring Boot.

Например.

@PostMapping(value = "/foo", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
public void postFooAsMultiPart(@RequestBody Foo foo) {
    ...
}

Spring действительно хорошо выполняет маршалинг составного запроса к объекту (StandardServletMultipartResolver).

Я представляю конечную точку с помощью Swagger (Springfox). Зависимости:

  • io.springfox: springfox-swagger2: 2.8.0
  • io.springfox: Springfox-swagger-ui: 2.8.0

Однако он отображает все тело как единое поле:

http://localhost:8080/v2/api-docs

...
"parameters": [
  {
    "in": "body",
    "name": "foo",
    "description": "foo",
    "required": true,
    "schema": {
      "$ref": "#/definitions/Foo"
    }
  }
],
...

Мой вопрос: можно ли заставить Swagger отображать каждый из атрибутов Foo как отдельные параметры?

Примечание. В качестве обходного пути я использовал @ApiImplicitParams, чтобы указать все атрибуты Foo на уровне контроллера. Однако я считаю это скорее обходным путем, чем правильным решением.

Редактировать Я потратил немного времени на изучение кода и почти уверен, что это невозможно сделать с текущей версией. Я открыл вопрос в репозитории GitHub, предлагая изменения. Я обновлю / отвечу на этот вопрос в зависимости от результата.

Он должен работать без добавления аннотации @ApiImplicitParams, если вы удалите аннотацию @RequestBody, я полагаю.

Dilip Krishnan 05.05.2018 15:53

@DilipKrishnan Если я это сделаю, он добавит атрибуты в качестве параметров запроса, и swagger отправит их таким образом. Например. { "name": "bar", "in": "query", "description": "Bar description", "required": false, "type": "string" }

Andy N 07.05.2018 10:47
1
2
1 463
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ага. Это была ошибка. Исправлено сейчас (в 2.9.1).

Да, но теперь, если у вас есть простые поля и поле для загрузки, вы не можете добавить порядок этих полей и сделать их обязательными. У вас есть решение для этого?

Lefteris Bab 21.10.2020 11:03

Другие вопросы по теме