Имейте очень простой класс:
@RestController
public class LoggingController {
@GetMapping("/test")
public ResponseEntity<String> test() {
return new ResponseEntity<>("Hello", HttpStatus.OK);
}
}
Когда я захожу в браузер, он выдает ошибку 404. Я добавил регистратор, который подтверждает отправку запросов. Не знаю, почему не вызывается соответствующий обработчик.
Incoming request to /test with method GET
Есть идеи?
Те же результаты, что и у @RequestMapping("/"), который представляет собой ответ 404.
Есть ли @RequestMapping
в другом контроллере? Можете ли вы предоставить то, что вы пытаетесь отправить, например, снимок почтальона или веб-браузера?
Можете ли вы предоставить минимально воспроизводимый пример ? Можете ли вы воспроизвести это в новом проекте?
Просто догадайтесь, пожалуйста, проверьте конфигурацию контекстного пути один раз в свойствах приложения для запускаемого профиля и отправляется ли он. Кроме того, находится ли ваше основное приложение и этот контроллер в одном базовом пакете? Просто чтобы убедиться, что сканирование компонентов работает правильно, иначе вам необходимо явно определить то же самое.
Пожалуйста, поделитесь: 1. Какие зависимости у вас есть в вашем pom.xml или build.gradle? 2. Какова структура вашего проекта? Это загрузочный проект Spring или обычный проект Spring?
Этот ответ исправил мои проблемы. stackoverflow.com/a/53963081/531928
Попробуйте добавить аннотации @RequestMapping в класс LoggingController.
Попробовал добавить @RequestMapping("/") с тем же результатом.
Совершите экскурсию . На мой взгляд, ваш ответ больше подходит в качестве комментария. В любом случае, он идентичен этому комментарию , который уже указал ОП, не решил его проблему. Вам нужно заслужить право комментировать.
Здесь есть две возможные причины, по которым контроллер возвращает 404.
Возможно, ваш контроллер находится в пакете «над» основным классом.
например
src/main/java
|-- controllers
|-- LoggingControler
|-- framework
|-- MainApplication
Либо переместите MainApplication в самый внешний общий пакет, либо объявите @ComponentScan в классе MainApplication, который добавит другие пакеты, в которых классы собираются при сканировании.
src/main/java
|-- controllers
|-- LoggingControler
|-- MainApplication
Возможно, вы объявили свойство server.servlet.context-path
в файле application.properties.
например
server.servlet.context-path=foo
тогда путь, который вы должны запросить, будет: http://localhost:8080/foo/test
LoggingController может находиться в другом пакете, а не в одном пакете с @SpringBootApplication XXXXApplication? добавьте @ComponentScan для сканирования пакета loggingcontroller
Вам следует добавить @RequestMapping("/insertSomething") к вашему контроллеру. Затем используйте полный путь для доступа к нему: yourAdress/insertSomething/test.
Вам также следует сделать так, чтобы при отправке запроса не добавлялось / в конце URL-адреса (например, если вы используете какое-либо внешнее приложение для выполнения запроса).
добавьте
@RequestMapping("")