Какую именно проблему вы испытываете с Postman при тестировании API на Java?

У меня прописан порт: `server.port=8080`. Также имеется контроллер: 

```java
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MainController {

    @GetMapping("api/main")
    public String mainListener(){
        return "Hello";
    }
}
```

Я отправляю GET-запрос через Postman по адресу `localhost:8080/api/main`, не включая тело запроса. Однако получаю ответ:

```json
{
    "timestamp": "2024-12-07T09:36:37.168+00:00",
    "status": 404,
    "error": "Not Found",
    "path": "/api/main"
}
```

Можете, пожалуйста, подсказать, в чем может заключаться проблема?
  • 7 декабря 2024 г. 9:43
Ответы на вопрос 3
Судя по вашему описанию, у вас корректно настроен контроллер с методом, который обрабатывает GET-запрос на `/api/main`. Однако вы получаете ошибку 404 Not Found, что говорит о том, что путь не распознается. 

Вот несколько вещей, которые вам следует проверить:

1. **Проверьте контекстный путь**: Убедитесь, что у вас нет настроек для установки корневого контекстного пути вашего приложения, например, через `server.servlet.context-path`. Если, например, у вас задан `server.servlet.context-path=/myapp`, тогда ваш запрос должен быть направлен на `localhost:8080/myapp/api/main`.

2. **Проверьте, запущено ли приложение**: Убедитесь, что ваше приложение действительно запущено на порту 8080. Попробуйте открыть браузер и перейти по адресу `http://localhost:8080/`, чтобы проверить, работает ли сервер. Если он не работает, проверьте журнал консоли на наличие ошибок.

3. **Проверка зависимости**: Убедитесь, что у вас есть необходимые зависимости, включая `spring-boot-starter-web` в вашем `pom.xml` или `build.gradle`. Если зависимость отсутствует, приложение может не работать должным образом.

4. **Правильное использование HTTP методов**: Убедитесь, что вы используете GET метод в Postman. Вы можете проверить это, выбрав метод `GET` из выпадающего списка в верхней части интерфейса запроса Postman.

5. **Настройка CORS (если необходимо)**: Если вы тестируете с сервера, отличного от `localhost`, могут возникнуть проблемы с CORS. Убедитесь, что настройки CORS разрешают ваши запросы.

Если все вышеперечисленное в порядке, но проблема остаётся, попробуйте также:

- Запустить Postman с правами администратора (в некоторых случаях это может помочь при разрешениях).
- Проверить журнал вашей Spring Boot приложения на предмет ошибок или предупреждений при запуске.

Если у вас есть доступ к коду конфигурации, проверьте наличие других контроллеров или конфигураций, которые могут переопределять ваш путь.
1. Советую еще вызвать @RequestMapping("/api") перед классом. 
Вам тогда не нужно подтягивать /api перед каждым методом.
2. Советую вам использовать ResponseEntity так будет лучше.
3. Это просто моё мнение. Лично мне постман не нравится. Для меня лучше bruno.
Попробуйте его, может постман тупит.
Добавил анатоцию в main @ComponentScan(basePackageClasses = MainController.class). 
1. Сработало для @GetMapping("/api/main")
2. Для @GetMapping("/api/cat") ответ 200, но ответ не приходит, срабатывает исключение. При этом, если в классе Cat использую анатоции на конструктыры приложение не компилируется, выдает:
java: constructor Cat in class com.example.apilearn.entity.Cat cannot be applied to given types;
  required: no arguments
  found:    java.lang.String,int,int
  reason: actual and formal argument lists differ in length
Похожие вопросы