Spring Boot: Решаем проблему с доступом к REST на localhost

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для того чтобы убедиться в доступности REST-контроллера, проверьте правильность указания пути в аннотации @RequestMapping. Основной класс с @SpringBootApplication должен быть расположен в корневой части иерархии пакетов. Код может выглядеть примерно так:

Java
Скопировать код
@SpringBootApplication
public class Application { /* Нет содержимого. */ }

@RestController
@RequestMapping("/api")
public class Controller {
    @GetMapping("/example") // Путь к методу: /api/example
    public String getExample() {
        return "Все системы в норме! — Анакин Скайуокер";
    }
}

Адрес вашего запроса будет следующий: http://localhost:<port>/api/example. Убедитесь в правильном указании порта, типа запроса и зависимости spring-boot-starter-web.

Кинга Идем в IT: пошаговый план для смены профессии

Сканирование ваших компонентов производится корректно?

При появлении ошибки 404 убедитесь, что @RestController находится в пакетах, которые сканирует Spring Boot. По умолчанию Spring Boot сканирует пакеты, расположенные в том же пакете, что и класс с аннотацией @SpringBootApplication. Чтобы подключить контроллеры из других пакетов, используйте @ComponentScan:

Java
Скопировать код
@ComponentScan(basePackageClasses = YourController.class)

Или если контроллеры находятся в разных пакетах:

Java
Скопировать код
@ComponentScan(basePackages = {"com.example.book", "com.example.author"})

Поместите класс с @SpringBootApplication в корневой пакет, чтобы все контроллеры были просканированы.

Проверьте соответствие URL-сопоставлений

Пути для @RestController определяются с помощью аннотаций @RequestMapping или @GetMapping. Структура полного URL выглядит так: путь контекста сервера + маршрут контроллера + путь метода.

Java
Скопировать код
@RestController
@RequestMapping("/api")
public class YourController {
    @GetMapping("/book") // Полный URL: /api/book
    public ResponseEntity<?> getBook() { /* Читайте книги, они открывают мир. */ }
}

Чтобы запрос был успешным, он должен соответствовать полному URL, заданному в коде.

Попробовали ли вы перезагрузить сервер?

Ошибки 404 часто связаны с некорректно указанным портом при запуске Spring Boot.

  • Проверьте, исправно ли работает ваше приложение.
  • В журнале отслеживайте, на каком порту происходит прослушивание ("Опять 8080").
  • Исследуйте файл application.properties на наличие конфликтов или изменений порта.

Визуализация

Сводная схема:

Ваш Дом (REST-контроллер): 🏠 с дверным звонком (Endpoint)

УСПЕШНЫЙ ЗАПРОС Посетитель (Клиент) 🚶‍♂️ ➡️ 🛎️(Соблюдены условия/API-запрос) ➡️ 🏠 (Добро пожаловать!)

ОШИБКА 404 Посетитель (Клиент) 🚶‍♂️ ➡️ ❌ (Неверные условия/Отсутствует API-запрос) ➡️ 🌳 (Наткнулись на дерево вместо дома)

Для успешного исхода встречи требуется корректно указать маршрут и обеспечить работоспособность "звонка".

Требуется ли карта вашего приложения?

Определение компонентов Spring Boot происходит автоматически. Но бывает полезно:

  • Воспользоваться приложением для отладки для просмотра бинов в контексте приложения Spring.
  • Обратиться к актуаторным конечным точкам /beans или /mappings для диагностики в режиме реального времени.
  • Ознакомиться с автоматически генерируемым отчетом настроек при запуске приложения.

Полезные советы

  • Убедитесь, что в файле сборки Maven или Gradle присутствует spring-boot-starter-web.
  • Проверьте, что в @RestController есть все нужные аннотации, например @RequestMapping или @GetMapping.
  • Добавьте аннотацию @CrossOrigin для обработки междоменных запросов, если они поступают извне вашего домена.
  • Систематически используйте точки останова в вашем контроллере для выявления ошибок.
  • Если вы используете Spring Security, проверьте, чтобы настройки безопасности не блокировали доступ.

Полезные материалы

  1. Документация по Spring Boot — детальное руководство по созданию REST-сервисов с использованием Spring Boot.
  2. Подробное руководство по обработке исключений в Spring Boot — описание стратегий обработки ошибок в приложениях Spring Boot.
  3. Конфигурация Spring Boot для MySQL — пошаговая инструкция по подключению Spring Boot к MySQL.
  4. Архитектура Spring Security — руководство по обеспечению безопасности ваших API с применением Spring Security.
Свежие материалы