【发布时间】:2019-08-23 16:50:52
【问题描述】:
我有一个 OpenApi 规范:
paths:
/lessons:
get:
tags:
- lesson
operationId: getLessons
parameters:
- in: query
name: daysOfWeek
schema:
type: array
items:
$ref: '#/components/schemas/DaysOfWeekEnum'
使用 swagger codegen 这会生成一个端点,如:
@ApiOperation(value = "Get a collection lessons", nickname = "getLessons", notes = "", response = LessonDto.class, responseContainer = "List", tags={ "lesson", })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "List of Lessons", response = LessonDto.class, responseContainer = "List") })
@RequestMapping(value = "/lessons",
produces = { "application/json" },
method = RequestMethod.GET)
default ResponseEntity<List<LessonDto>> _getLessons(@ApiParam(removed for brevity) @Valid @RequestParam(value = "daysOfWeek", required = false, defaultValue="new ArrayList<>()") List<DaysOfWeekEnum> daysOfWeek) {
return getLessons(daysOfWeek);
}
我在这样的测试中使用 TestRestTemplate:
ResponseEntity<List<LessonDto>> lessonDtos =
testRestTemplate.exchange("/lessons", HttpMethod.GET, null,
new ParameterizedTypeReference<List<LessonDto>>() {
});
这个网址有效:
/lessons?daysOfWeek=THURSDAY
这些网址不:
/lessons
/lessons?daysOfWeek=SOME_INVALID_VALUE
...我收到以下错误:
嵌套异常是 com.fasterxml.jackson.databind.exc.MismatchedInputException:不能 从 START_OBJECT 中反序列化
java.util.ArrayList的实例 令牌
任何帮助表示赞赏。
【问题讨论】:
标签: spring-boot spring-mvc swagger openapi