Как указать тип носителя по умолчанию для конечных точек в службе Spring BootJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как указать тип носителя по умолчанию для конечных точек в службе Spring Boot

Сообщение Anonymous »

Я создаю службу Spring Boot с несколькими конечными точками. Мой сервис должен поддерживать вывод как в формате json, так и в формате xml. Большинство конечных точек будут только в формате json, а некоторые — только в формате xml. Я могу указать тип контента, который принимает или возвращает конкретная конечная точка, с помощью аннотации @RequestMapping. Например:

Код: Выделить всё

@RequestMapping(method = RequestMethod.POST,
consumes = {MediaType.APPLICATION_XML_VALUE},
produces = {MediaType.APPLICATION_XML_VALUE})
Однако, поскольку большинство конечных точек моего приложения будут только в формате JSON, я хотел избежать необходимости писать

Код: Выделить всё

consumes = {MediaType.APPLICATION_JSON_VALUE},
produces = {MediaType.APPLICATION_JSON_VALUE}
во всех. Есть ли способ сделать так, чтобы метод, аннотированный @RequestMapping, имел тип носителя по умолчанию, потребляющий и производящий? Всякий раз, когда мне нужно что-то отличное от значения по умолчанию, я могу это указать.

Я пробовал настроить согласование контента, но к этому это не относится. Я думаю, что я мог бы сделать это посредством согласования контента с помощью специального ContentNegotiationStrategy, но мне понадобится этот код, чтобы иметь возможность читать аннотации обработчика для этого запроса (конкретный метод, аннотированный @RequestMapping), и код получает только NativeWebRequest.

Существует ли глобальная конфигурация Spring для достижения этой цели?

РЕДАКТИРОВАТЬ:
Настройка согласования контента с

Код: Выделить всё

@Configuration
@EnableWebMvc
class ContentNegotiationConfiguration extends WebMvcConfigurerAdapter {
@Override
public void configureContentNegotiation(ContentNegotiationConfigurer configurer) {
configurer.favorParameter(false)
.favorPathExtension(true)
.ignoreAcceptHeader(true)
.ignoreUnknownPathExtensions(false)
.useJaf(false)
.defaultContentType(MediaType.APPLICATION_JSON);
}
}
и конечная точка с

Код: Выделить всё

@RequestMapping(method = RequestMethod.GET)
затем вызов конечной точки

Код: Выделить всё

GET https://localhost:8080/endpoint.xml
возвращает выходные данные в формате XML и HTTP 200 вместо HTTP 406.

Подробнее здесь: https://stackoverflow.com/questions/528 ... ot-service
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»