#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
.