假设我有一个用枚举模式定义的参数:
paths:
/echo:
get:
parameters:
- name: someEnum
in: query
required: true
schema:
type: string
enum: [A, B, C]
responses:
200:
description: Success
content:
text/plain:
schema:
type: stringSwagger codegen为spring语言生成以下Java接口:
@ApiOperation(value = "", nickname = "echoGet", notes = "", response = String.class, tags={ })
@ApiResponses(value = {
@ApiResponse(code = 200, message = "Success", response = String.class) })
@RequestMapping(value = "/echo",
produces = { "text/plain" },
method = RequestMethod.GET)
default ResponseEntity<String> echoGet(@NotNull @ApiParam(value = "", required = true, allowableValues = "A, B, C") @Valid @RequestParam(value = "someEnum", required = true) String someEnum) {
if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
} else {
log.warn("ObjectMapper or HttpServletRequest not configured in default EchoApi interface so no example is generated");
}
return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED);
}生成的接口中someEnum的类型为String。如何用Java枚举替换为"A“、"B”、"C“值?
发布于 2019-08-13 19:15:59
将命名类型添加到架构并使用它:
paths:
/echo:
get:
parameters:
- name: someEnum
in: query
required: true
schema:
$ref: '#/components/schemas/MyEnum'
responses:
200:
description: Success
content:
text/plain:
schema:
type: string
components:
schemas:
MyEnum:
type: string
enum: [A,B,C]发布于 2019-08-13 19:15:33
在components/schemas部分中定义您的枚举模式,并从参数定义中$ref它,如下所示。在这种情况下,Swagger Codegen将把枚举生成为实际的Java枚举。
openapi: 3.0.0
...
paths:
/echo:
get:
parameters:
- name: someEnum
in: query
required: true
schema:
$ref: '#/components/schemas/MyEnum'
...
components:
schemas:
MyEnum:
type: string
enum: [A, B, C]https://stackoverflow.com/questions/57475420
复制相似问题