Как выполнить POST с Postman в API в Java? - PullRequest
0 голосов
/ 06 августа 2020

Я попытался создать небольшой API для выполнения тестов, мой код Java кажется нормальным, с Postman, когда я хочу выполнить GET, мой список продуктов подходит для меня, с другой стороны, когда я хочу сделать POST, у меня 400 Bad Request.

Вот мой код:

// Produits
    @GetMapping(value = "/Produits")
    public List<Product> listeProduits() {
        return productDao.findAll();
    }

    // Récupère un produit par son ID
    @GetMapping(value = "/Produits/{id}")
    public Product afficherUnProduit(@PathVariable int id) {
        return productDao.findById (id);
    }

    @PostMapping(value = "Produits/")
    public void ajouterProduit(@RequestBody @Validated Product product, final HttpServletRequest request, Error filterError) {
        productDao.save(product);
    }

В Postman у меня в теле есть content-type: application / json of fill in .

Откуда эта проблема?

Спасибо

Ответы [ 5 ]

0 голосов
/ 07 августа 2020

Я смотрел ваш проект. Все работает нормально. Но у вас "плохой" URL-адрес POST - "/ Produits /" <--- last sla sh может быть причиной долгого непонимания и "Почему это не работает !!". Поскольку в Postman вы также должны вызвать url -> "localhost: 8080 / Produits /" <- здесь также нужен последний sla sh. </p>

Я начал ваш проект, и он хорошо работает с этой настройкой Почтальон (фото ниже). Пожалуйста, смотрите внимательно, каждый символ может быть причиной.

HEADERS

enter image description here

After POST and save I was able to get entity through GET method

введите описание изображения здесь

0 голосов
/ 06 августа 2020

Класс продукта:

public class Product {

    private int id;
    private String nom;
    private int prix;
    private int dureeDeVie;

    public Product() {
    }

    public Product (int id, String nom, int prix, int dureeDeVie) {
        this.id = id;
        this.nom = nom;
        this.prix = prix;
        this.dureeDeVie = dureeDeVie;
    }

    public int getId () {
        return id;
    }

    public void setId (int id) {
        this.id = id;
    }

    public String getNom () {
        return nom;
    }

    public void setNom (String nom) {
        this.nom = nom;
    }

    public int getPrix () {
        return prix;
    }

    public void setPrix (int prix) {
        this.prix = prix;
    }

    public int getDureeDeVie () {
        return dureeDeVie;
    }

    public void setDureeDeVie (int dureeDeVie) {
        this.dureeDeVie = dureeDeVie;
    }

    @Override
    public String toString () {
        return "Product{" +
                "id=" + id +
                ", nom='" + nom + '\'' +
                ", prix=" + prix +
                ", dureeDeVie=" + dureeDeVie +
                '}';
    }

}
0 голосов
/ 06 августа 2020

400 - неверный запрос. Возможно, вы делаете неправильный запрос POST вместо GET. Потому что только метод ajouterProduit имеет проверку. проверьте свою службу через curl, если у вас есть Linux или Ma c: curl http://localhost: 8080 / Produits / Это поможет вам понять - вы делаете неправильный запрос почтальона или служба имеет другой URL-адрес или что-то в этом роде

0 голосов
/ 06 августа 2020

И еще код:

@Override
    public List<Product> findAll () {
        return products;
    }

    @Override
    public Product findById (int id) {
        for (Product product : products) {
            if (product.getId () == id) {
                return product;
            }
        }
        return null;
    }


    @Override
    public Product save (Product product) {
        products.add(product);
        return product;
    }

И экран почтальона:

введите описание изображения здесь

0 голосов
/ 06 августа 2020

Я попытался воспроизвести получение неверного запроса 400, но мне это не удалось.

На основе вашего кода я могу получить доступ (вы можете попробовать это)

localhost:8080/Produits/

но

localhost:8080/Produits

возвращено 404, не найдено.

Возможно, вы можете добавить дополнительную информацию, которая может оказаться полезной. Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...