Spring Boot: сопоставление путей и согласование контента
Spring MVC может сопоставлять входящие HTTP-запросы с обработчиками, просматривая путь запроса и сопоставляя его с отображениями, определенными в вашем приложении (например, аннотации @GetMapping для методов Controller).
Spring Boot по умолчанию выбирает отключение сопоставления с суффиксами, что означает, что запросы типа "GET /projects/spring-boot.json" не будут сопоставляться с сопоставлениями @GetMapping("/projects/spring-boot"). Это считается лучшей практикой для приложений Spring MVC. Эта функция в основном была полезна в прошлом для клиентов HTTP, которые не отправляли надлежащие "Accept" заголовки запроса; мы должны были убедиться, что отправили правильный тип контента клиенту. В настоящее время согласование контента намного надежнее.
Существуют и другие способы работы с HTTP-клиентами, которые не всегда отправляют правильные "Accept" заголовки запроса. Вместо использования сопоставления суффиксов мы можем использовать параметр запроса, чтобы гарантировать, что запросы типа "GET /projects/spring-boot?format=json" будут сопоставлены с @GetMapping("/projects/spring-boot"):
spring.mvc.contentnegotiation.favor-parameter=true
# Мы можем изменить имя параметра, которое является "format" по умолчанию:
# spring.mvc.contentnegotiation.parameter-name=myparam
# Мы можем зарегистрировать дополнительные расширения файлов/медиа типы:
spring.mvc.contentnegotiation.media-types.markdown=text/markdown
Если вы понимаете предостережения и хотите, чтобы ваше приложение использовало сопоставление с суффиксами, необходима следующая конфигурация:
spring.mvc.contentnegotiation.favor-path-extension=true
spring.mvc.pathmatch.use-suffix-pattern=true
Альтернативно, вместо того, чтобы открывать все шаблоны суффиксов, более безопасно просто поддерживать зарегистрированные шаблоны суффиксов:
spring.mvc.contentnegotiation.favor-path-extension=true
spring.mvc.pathmatch.use-registered-suffix-pattern=true
# Вы можете также зарегистрировать дополнительные расширения файлов/медиа типы:
# spring.mvc.contentnegotiation.media-types.adoc=text/asciidoc
ConfigurableWebBindingInitializer
Spring MVC использует WebBindingInitializer для инициализации WebDataBinder для определенного запроса. Если вы создаете свой собственный ConfigurableWebBindingInitializer @Bean, Spring Boot автоматически настраивает Spring MVC для его использования.
Читайте также:
- Spring Boot: разработка веб-приложений
- Spring Boot: автоконфигурация Spring MVC
- Spring Boot: HttpMessageConverters
- Spring Boot: пользовательские сериализаторы и десериализаторы JSON
- Spring Boot: статический контент
- Разработка вашего первого Spring Boot приложения
Комментарии
Отправить комментарий