为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 spring 控制器中使用枚举作为参数,该控制器使用“spring”

如何在 spring 控制器中使用枚举作为参数,该控制器使用“spring”

长风秋雁 2023-06-04 17:37:29
假设我有一个用枚举模式定义的参数: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 为语言生成以下 Java 接口spring:    @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生成接口的类型是字符串。如何用具有“A”、“B”、“C”值的 Java 枚举替换它?
查看完整描述

2 回答

?
绝地无双

TA贡献1946条经验 获得超4个赞

将命名类型添加到模式并使用它:


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]


查看完整回答
反对 回复 2023-06-04
?
LEATH

TA贡献1936条经验 获得超6个赞

在部分中定义您的枚举架构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]


查看完整回答
反对 回复 2023-06-04
  • 2 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信