В проекте (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")?
Потому что маппинг ставится не на @RestController, а на @RequestMapping или ему подобных(@GetMapping, @PostMapping...)
Ответ содержится вот тут 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-паттерн.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости