首页 > 解决方案 > Swagger - 如何使用相同的 http 方法和路径但内容类型不同的多个操作?

问题描述

如主题。我想在 swagger 中使用相同的路径和 http 方法但具有不同的内容类型进行不同的操作。示例:我目前在 2.0.5 版本中使用 Spring Boot,在 2.9.2 版本中使用 Swagger ui。在我的 API 中,我有两种注册用户的方法:

@RequestMapping(method = RequestMethod.POST, consumes = "application/customer+json", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Registers a new application customer", notes = "Registers a new application customer.\n", response = CustomerResource.class)
@ApiResponses(value = {
        @ApiResponse(code = 201, message = "Customer successfully registered"),
        @ApiResponse(code = 409, message = "User with such email is already registered"),
        @ApiResponse(code = 422, message = "Customer registration request contains validation errors. Response contains detailed field validation error message"),
        @ApiResponse(code = 428, message = "Database error. Application log needs to be checked")})
public ResponseEntity<UserResource> registerCustomer(
        @ApiParam(value = "Model representation of the transferred data to register a new customer")  @Valid @RequestBody CustomerDto customerDto,
        UriComponentsBuilder uriComponentsBuilder,  BindingResult bindingResult)
{
...
}

@RequestMapping(method = RequestMethod.POST, consumes  = "application/partner+json", produces = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "Registers a new application partner", notes = "Registers a new Easy Parking partner.\n", response = PartnerResource.class)
@ApiResponses(value = {
        @ApiResponse(code = 201, message = "Partner successfully registered"),
        @ApiResponse(code = 409, message = "User with such email is already registered"),
        @ApiResponse(code = 422, message = "Partner registration request contains validation errors. Response contains detailed field validation error message"),
        @ApiResponse(code = 428, message = "Database error. Application log needs to be checked")})
public ResponseEntity<UserResource> registerPartner(
        @ApiParam(value = "Model representation of the transferred data to register a new user")  @Valid @RequestBody PartnerDto partnerDto,
        UriComponentsBuilder uriComponentsBuilder, BindingResult bindingResult)
{ ... }

我想要一个 POST 路径:/api/users 来注册两种类型的用户:客户和合作伙伴。需要两个操作,因为合作伙伴的属性与客户的属性略有不同。我想使用内容类型(消耗)进行不同的操作,但招摇似乎只适用于路径和 http 方法。不是bug吗??有没有办法在 Spring Boot Swagger 中配置它?

标签: javaspring-bootswaggerswagger-ui

解决方案


推荐阅读