Маппинг запросов в SpringBoot 2+

172
22 сентября 2019, 08:20

В проекте (SpringBoot 2+, thymeleaf) есть простой рест-контролер вида:

@RestController
public class Controller {
@GetMapping ("/index")
public String index() {
    return "Hellow";
}

Если запустить в таком виде, то запрос на localhost:8080/index обрабатываются нормально, все что кроме этого адреса не проходит (например localhost:8080/index/ - отдаст 404). Но если навесить аннотацию на класс:

@RestController ("/index")
public class Controller {
@GetMapping
public String index() {
    return "Hellow";
}

то запросы обрабатываются некорректно - на все запросы, localhost:8080/index/, localhost:8080/, даже мусорные адреса на которых нет маппинга - localhost:8080/qqqqqq) - возвращают вместо 404 - "Hellow".

Почему? Почему во втором случае все запросы к приложению поступают к этому контроллеру, хотя я задал маппинг на конкретный контекст ("/index")?

Answer 1

Потому что маппинг ставится не на @RestController, а на @RequestMapping или ему подобных(@GetMapping, @PostMapping...)

Answer 2

Ответ содержится вот тут https://www.baeldung.com/spring-controller-vs-restcontroller и тут https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/bind/annotation/RestController.html. Если коротко - в скобках для @RestController () указывается имя логического компонента, а не url-паттерн.

READ ALSO
Как анимировать рукописный текст на веб-странице с помощью SVG

Как анимировать рукописный текст на веб-странице с помощью SVG

Я пытаюсь анимировать текст, который я создал и сохранил как SVGДо сих пор мне удавалось только оживить stroke, но это не то, что я хочу получить

172
Баннеры на мобильном

Баннеры на мобильном

Ковыряюсь с чужим кодом, не могу понять - почему баннеры не сжимаются под мобилкупробовал #content-desctop/mobile, media screen, auto-width, width-auto в css вот так:

172
CORS policy blocking

CORS policy blocking

Есть проект в котором нужно настроить авторизациюПри попытке авторизоваться вылазит Access to XMLHttpRequest at 'http://localhost:8080/login?username=admin&password=admin' from origin...

185