Я реализовал два разных 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());
}