Я использую Swagger версии 2.4.0 и Spring Boot 2.0.4.RELEASE, и у меня есть приложение с несколькими конечными точками API и со стандартной конфигурацией Swagger со значением по умолчанию, при котором значение заголовка устанавливается равным application/json
.
SwaggerConfig.java
@Configuration
@EnableSwagger2
public class SwaggerConfig {
private static final Set<String> DEFAULT_PRODUCES_AND_CONSUMES = ImmutableSet.of(
"application/json"
);
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.produces(DEFAULT_PRODUCES_AND_CONSUMES)
.consumes(DEFAULT_PRODUCES_AND_CONSUMES);
}
}
И с настройкой конечной точки API.
ApiEndpoint.java
@Consumes(MediaType.APPLICATION_JSON)
@Api(value = "/transform", protocols = "http, https")
@RequestMapping(value = "/transform")
public interface ApiEndpoint {
@POST
@RequestMapping(value = "/text", method = RequestMethod.POST)
@ApiOperation(value = "Transform to plain text", produces = MediaType.TEXT_PLAIN)
@CrossOrigin
String transformToText(@RequestBody TransformRequest transformRequest) throws Exception;
}
Теперь я хочу, чтобы эта конечная точка выдавала ответ с типом содержимого, представляющим собой только простой текст, но SwaggerConfig добавляет опцию application/json
по умолчанию. Поэтому, чтобы правильно использовать эту конечную точку, мне нужно было бы каждый раз менять тип содержимого ответа с application/json
на text/plain
, что довольно быстро раздражало бы, учитывая, что эта конечная точка используется для тестирования. Есть ли способ переопределить SwaggerConfig или добавить параметр, чтобы text / plain был единственным вариантом, или, по крайней мере, установить text / plain в качестве параметра по умолчанию только для этой одной конечной точки?