Не удалось преобразовать значение свойства типа 'java .lang.String' в требуемый тип в Open API 3 - PullRequest
1 голос
/ 26 апреля 2020

У меня есть @RestController с таким методом

@RestController
public MyController {

@Operation(summary = "Some text", description = "Some text again"
@GetMapping("/route")
public MyClassResponse getSomething(
@Parameter(name = "My request", description = "My request") MyRequest request
) {

    // to do smth

    return response
}

, где MyRequest равен

public class MyRequest {

private int param1;

private String param2;

private MyClass param3;

}

, а MyClass выглядит как

public class MyClass {

private int clazzParam1;
private int clazzParam2;
}

Прежде всего, Swagger показывает параметр MyRequest как тело

{
"param1" : 0;
"param2" : "string",
"param3" : {
    "clazzParam1" : 0,
    "clazzParam2" : 0
    }
}

, но я хотел бы видеть каждый параметр как этот

Второй, когда я пытаюсь сделать запрос, я получаю этот curl

http://localhost: 8080 / route? Param1 = 0¶m2 = string¶m3 = clazzParam1,0, clazzParam2,0

вместо

http://localhost: 8080 / route? Param1 = 0¶m2 = string¶m3.clazzParam1 = 0¶m3.clazzParam2 = 0

Поэтому в ответе содержится следующая ошибка Не удалось преобразовать значение свойства типа 'java .lang.String 'для требуемого типа' MyClass 'для свойства' param3 '.

Как использовать аннотации, чтобы получить то, что я хочу? По разным причинам я не могу использовать описание .yaml. Спасибо.

1 Ответ

0 голосов
/ 27 апреля 2020

@ ParameterObject является ответом. Это распаковка объекта по параметрам в Swagger UI

...