Spring Boot: настройка префикса url для RestControllers

Я не эксперт по весне, и будучи черным ящиком, что это, было трудно понять вещи самостоятельно, даже с документацией весны. Иногда я просто понятия не имею, что я ищу, чтобы начать поиск...

в моем приложении Spring Boot я пытаюсь выяснить, как настроить уникальный префикс url для всех моих RestControllers.

все, что мне действительно нужно, - это чтобы мой статический контент обслуживался из корневого контекста,"/", но мои конечные точки RestController доступны из другого контекста, скажем " / api/*".

Я знаю, как изменить контекст по умолчанию приложения через приложение.недвижимость, но это не совсем то, что мне нужно. Я показываю свое невежество здесь, когда дело доходит до сервлетов, отображений и т. д., Поскольку я говорю, что пытаюсь получить два разных контекста для двух разных типов контента.

2 ответов


Я думаю, что это действительный момент, хотя обычно его разделяют как два (или более приложений). Предположим, вы хотите обработать (1) веб-сайт, обслуживающий HTML/CSS/JS и (2) API REST. Поверх ваших контроллеров вы определяете "контекст", используя @RequestMapping (вы не можете иметь два, поэтому они будут в разных контроллерах, опять же, в зависимости от того, что вы пытаетесь достичь):

  • @RequestMapping(/web)
  • @RequestMapping(/api/v1)

...а потом внутри эти контроллеры в методах вы можете назначить "остальную часть URL", снова используя @RequestMapping(value = "/index", method = RequestMethod.GET).

например /web/index, /web/error; а также: /api/v1/something, /api/v1/something-else.

имея хороший пакет конвенции поможет вам не заблудиться с таким количеством контроллеры.

Примечание: помните, что вам не нужно повторять один и тот же контекст в каждом отдельном методе, а просто "остальная часть URL".


Я не знаю, помогает ли это, я только что опубликовал решение, которое я тестирую в другом потоке:

как настроить префикс URI @RestController по умолчанию для всех контроллеров?