Задать вопрос
@Starvings

Проверяю api java. В чем проблема Postman?

controller

import com.example.apilearn.entity.Cat;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

//@RequestMapping("/api")
@RestController
public class MainController {

    @Autowired
    private ObjectMapper objectMapper;

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

    @GetMapping("/api/cat")
    public String giveCat(){
        Cat cat = new Cat("Barsik", 10, 7);
        String jsonData = null;

        try {
            jsonData = objectMapper.writeValueAsString(cat);
        } catch (JsonProcessingException e) {
            System.out.println("Error");
        }
        return jsonData;
    }

}


entity

@Getter
@Setter
//@AllArgsConstructor
//@NoArgsConstructor
public class Cat {
     String name;
     int age;
     int weight;

    public Cat(String name, int age, int weight) {
        this.name = name;
        this.age = age;
        this.weight = weight;
    }

    public Cat() {
    }
}


application.properties

server.port=8080

Main

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


@SpringBootApplication
public class ApilearnApplication {

    public static void main(String[] args) {
        SpringApplication.run(ApilearnApplication.class, args);
    }
}


при любом запросе (по локалхосту или IP) ловлю:

{
    "timestamp": "2024-12-08T06:19:49.879+00:00",
    "status": 404,
    "error": "Not Found",
    "path": "/api/cat"
}


Подскажите, пожалуйста, в чем может быть проблема?
  • Вопрос задан
  • 107 просмотров
Подписаться 1 Простой 7 комментариев
Пригласить эксперта
Ответы на вопрос 2
@artem-dainov
Php, java, js. Boot spring, jquery, git
1. Советую еще вызвать @RequestMapping("/api") перед классом.
Вам тогда не нужно подтягивать /api перед каждым методом.
2. Советую вам использовать ResponseEntity<?> так будет лучше.
3. Это просто моё мнение. Лично мне постман не нравится. Для меня лучше bruno.
Попробуйте его, может постман тупит.
Ответ написан
@Starvings Автор вопроса
Добавил анатоцию в 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
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы