[英]Swagger - how to use swagger-codegen and build a project on the long term
[英]How to use enum as parameter in spring controller that extends interface generated by swagger-codegen with "spring" language
假设我有一个用枚举模式定义的参数:
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: string
Swagger 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。 如何用带有“A”、“B”、“C”值的 Java 枚举替换它?
在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]
将命名类型添加到架构并使用它:
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]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.