Методы Post / Put не будут работать с React и Spring Boot

#reactjs #spring #spring-boot

#реагирует на #весна #пружинный ботинок

Вопрос:

У меня есть интерфейс с React и мой сервер на Spring Boot / MySQL.

Бэкэнд работает, и я проверил почту и применил методы к Почтальону. Так что, похоже, это проблема переднего плана. Метод Get и Delete работает с реакцией. Я могу ЗАГРУЖАТЬ и УДАЛЯТЬ все, что находится на моем интерфейсе.

Метод, который я пытаюсь использовать для выполнения Put / Post:

 const baseUrl = '/api/products'  const initialState = {  produit: {id: '', nom: '', prix: '', rabais: ''},  list: [] }  const config = {mode: 'cors',  credentials: 'same-origin',  headers: {   'Accept': 'application/json',  'Content-Type': 'application/json'  }}  async save() {  const {produit} = this.state  const requestOptions = {  method: (produit.id) ? 'PUT' : 'POST',  body: JSON.stringify(produit),  ...config  }  fetch(baseUrl, requestOptions);   }  

Я попытался изменить режим и учетные данные в разделе «конфигурация». Состояние, похоже, работает, так как я могу печатать переменные.

У меня есть «прокси»: «http://localhost:8080» на моей посылке.json.

Когда я пытаюсь выполнить метод POST / PUT, на консоли Chrome возникает следующая ошибка:

СООБЩЕНИЕ http://localhost:3000/api/products 400 (Плохой запрос)

ПОЛОЖИТЬ http://localhost:3000/api/products 400 (Плохой запрос)

В теории «http://localhost:3000» это интерфейс, и у меня нет папки /api/products на моем интерфейсе. Когда я выполняю УДАЛЕНИЕ / ПОЛУЧЕНИЕ, у меня тот же префикс «http://localhost:3000» когда я вижу на консоли Chrome, но это работает.

Редактировать

Я помещаю код на контроллер для Put / Post. Я тоже пробовал прокомментированный код.

  @RestController @RequestMapping("/api/products") public class ProductController {    //Injection de dependence  @Autowired  private ProductRepository productRepository;   // @RequestMapping(method = {RequestMethod.POST, RequestMethod.PUT}) // public @ResponseBody Product newProduct(@Valid Product product){ // productRepository.save(product); // return product; // }    @PostMapping  public @ResponseBody Product postProduct(@Valid Product product){  productRepository.save(product);  return product;  }    @PutMapping  public Product putProduct(@Valid Product product) {  productRepository.save(product);  return product;  }  

И модель:

 @Entity public class Product {    @Id  @GeneratedValue(strategy = GenerationType.IDENTITY)  private int id;    @NotBlank  private String nom;    //Java validation  @Min(0)  private double prix;    @Min(0)  @Max(1)  private double rabais;    public Product() {    }    public Product(String nom, double prix, double rabais) {  super();  this.nom = nom;  this.prix = prix;  this.rabais = rabais;  }  

Как я могу выяснить причину этого?

Комментарии:

1. Не могли бы вы также поместить служебный код с аннотациями?

2. Спасибо, что уделили мне время. Я сделал это.

Ответ №1:

(Опубликовал ответ от имени автора вопроса, чтобы переместить его в пространство ответов).

Я сделал это. На контроллере отсутствовала аннотация Java @RequestBody .