Поддерживает ли Swagger несколько отображений одного и того же глагола http на одной конечной точке? - PullRequest
0 голосов
/ 17 октября 2019

Я реализовал два разных PostMappings для одного URL. API различает пост-запросы по разным записям в заголовке. Я использую Swagger Annotations для API-документа. К сожалению, Swagger-UI документирует только одно из двух сопоставлений.

Я знаю, что лучше всего использовать другой URL. Но можно ли сказать Swagger перечислить оба PostMappings контроллера?

@RestController
@RequestMapping(AgreementController.BASE_URL)
@Api("Persists and checks agreements.")
public class AgreementController {

    public static final String BASE_URL = "/api/v1/agreements";
    private final AgreementService agreementService;

    public AgreementController(AgreementService agreementService) {
        this.agreementService = agreementService;
    }

@PostMapping(headers = "action=post-agreement", consumes = "application/json",
            produces = "application/json")
    public ResponseEntity<DataObject> postAgreement(@RequestBody DataObject payload) {
       agreementService.persistAgreement(payload);
       return ResponseEntity.status(HttpStatus.CREATED).body(payload);
    }

@PostMapping(headers = "action=get-agreement", consumes = "application/json")
public ResponseEntity getAgreement(@RequestBody DataObject payload) {
        Boolean found = agreementService.findSingleAgreement(payload);
        if (Boolean.TRUE.equals(found)) {
            return new ResponseEntity(HttpStatus.OK);
        } else {
            return new ResponseEntity(HttpStatus.NOT_FOUND);
        }
    }
}

Swagger Config:

    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.any())
                .paths(regex("/api/.*"))
                .build()
                .apiInfo(metaData());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...