Я пытаюсь получить данные из бэкэнда Springboot с помощью axios в интерфейсе vite+react, но это приводит к ошибке только при получении идентификатора данных, но URL-адрес работает правильно на локальном хосте с идентификатором.
URL-адрес: -
http://localhost:8080/api/products/1
Но через интерфейс отображается ошибка: -
Не удалось загрузить ресурс: сервер ответил со статусом 400 ()
Ошибка получения продукта: AxiosError
И в Backend отображается ошибка: -
Не удалось преобразовать значение типа «java.lang.String» в требуемый тип «int»; Для входной строки: «NaN»
Фронтенд: — Product.jsx
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
import axios from "../axios";
const Product = () => {
const { id } = useParams();
const [product, setProduct] = useState(null);
useEffect(() => {
const fetchProduct = async () => {
const productId = parseInt(id, 10);
try {
const response = await axios.get(`http://localhost:8080/api/products/${productId}`);
setProduct(response.data);
console.log(response.data);
} catch (error) {
console.error("Error fetching product:", error);
}
};
fetchProduct();
}, [id]);
if (!product) {
return (
Loading...
);
}
return (
{product.category}
{product.name}
{product.brand}
{product.description}
{"$" + product.price}
{product.productAvailable ? "Add to cart" : "Out of Stock"}
Stock Available :{" "}
{product.stockQuantity}
Product listed on:
{product.releaseDate}
Update
Delete
);
};
export default Product;
В Backend идентификатор инициализируется как: - Private int ProductID;
Маршрутизатор и объявление маршрута: -
import "./App.css";
import React, { useState, useEffect } from "react";
import Home from "./components/Home";
import Navbar from "./components/Navbar";
import Cart from "./components/Cart.jsx";
import AddProduct from "./components/AddProduct";
import Product from "./components/Product";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { AppProvider } from "./Context/context";
import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap/dist/js/bootstrap.bundle.min.js";
import 'bootstrap/dist/css/bootstrap.min.css';
function App() {
const [cart, setCart] = useState([]);
const [selectedCategory, setSelectedCategory] = useState("");
const handleCategorySelect = (category) => {
setSelectedCategory(category);
console.log("Selected category:", category);
};
const addToCart = (product) => {
const existingProduct = cart.find((item) => item.id === product.id);
if (existingProduct) {
setCart(
cart.map((item) =>
item.id === product.id
? { ...item, quantity: item.quantity + 1 }
: item
)
);
} else {
setCart([...cart, { ...product, quantity: 1 }]);
}
};
return (
);
}
export default App;
Бэкенд:-
ProductController.java
package com.shristi.ecom_proj.controller;
import com.shristi.ecom_proj.Model.Product;
import com.shristi.ecom_proj.service.productService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/api")
public class ProductController {
@Autowired
private productService service;
@RequestMapping("/")
public String greet(){
return "Hello World";
}
@GetMapping("/products")
public List
getAllProducts(){
return service.getAllProducts();
}
@GetMapping("/products/{id}")
public Product getProduct(@PathVariable int id){
return service.getProductById(id);
}
}
ProductService.java
@Autowired
private productRepo repo;
public Product getProductById(int id) {
return repo.findById(id).get();
Product.java
public class Product {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int productID;
private String Name;}
Подробнее здесь: https://stackoverflow.com/questions/791 ... xios-error
Как получить API из бэкэнда с ошибкой Axios ⇐ JAVA
Программисты JAVA общаются здесь
-
Anonymous
1729234596
Anonymous
Я пытаюсь получить данные из бэкэнда Springboot с помощью axios в интерфейсе vite+react, но это приводит к ошибке только при получении идентификатора данных, но URL-адрес работает правильно на локальном хосте с идентификатором.
URL-адрес: -
http://localhost:8080/api/products/1
Но через интерфейс отображается ошибка: -
Не удалось загрузить ресурс: сервер ответил со статусом 400 ()
Ошибка получения продукта: AxiosError
И в Backend отображается ошибка: -
Не удалось преобразовать значение типа «java.lang.String» в требуемый тип «int»; Для входной строки: «NaN»
Фронтенд: — Product.jsx
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
import axios from "../axios";
const Product = () => {
const { id } = useParams();
const [product, setProduct] = useState(null);
useEffect(() => {
const fetchProduct = async () => {
const productId = parseInt(id, 10);
try {
const response = await axios.get(`http://localhost:8080/api/products/${productId}`);
setProduct(response.data);
console.log(response.data);
} catch (error) {
console.error("Error fetching product:", error);
}
};
fetchProduct();
}, [id]);
if (!product) {
return (
Loading...
);
}
return (
{product.category}
{product.name}
{product.brand}
{product.description}
{"$" + product.price}
{product.productAvailable ? "Add to cart" : "Out of Stock"}
Stock Available :{" "}
[i]
{product.stockQuantity}
[/i]
Product listed on:
[i]{product.releaseDate}[/i]
Update
Delete
);
};
export default Product;
В Backend идентификатор инициализируется как: - Private int ProductID;
Маршрутизатор и объявление маршрута: -
import "./App.css";
import React, { useState, useEffect } from "react";
import Home from "./components/Home";
import Navbar from "./components/Navbar";
import Cart from "./components/Cart.jsx";
import AddProduct from "./components/AddProduct";
import Product from "./components/Product";
import { BrowserRouter, Routes, Route } from "react-router-dom";
import { AppProvider } from "./Context/context";
import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap/dist/js/bootstrap.bundle.min.js";
import 'bootstrap/dist/css/bootstrap.min.css';
function App() {
const [cart, setCart] = useState([]);
const [selectedCategory, setSelectedCategory] = useState("");
const handleCategorySelect = (category) => {
setSelectedCategory(category);
console.log("Selected category:", category);
};
const addToCart = (product) => {
const existingProduct = cart.find((item) => item.id === product.id);
if (existingProduct) {
setCart(
cart.map((item) =>
item.id === product.id
? { ...item, quantity: item.quantity + 1 }
: item
)
);
} else {
setCart([...cart, { ...product, quantity: 1 }]);
}
};
return (
);
}
export default App;
Бэкенд:-
ProductController.java
package com.shristi.ecom_proj.controller;
import com.shristi.ecom_proj.Model.Product;
import com.shristi.ecom_proj.service.productService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@CrossOrigin
@RequestMapping("/api")
public class ProductController {
@Autowired
private productService service;
@RequestMapping("/")
public String greet(){
return "Hello World";
}
@GetMapping("/products")
public List
getAllProducts(){
return service.getAllProducts();
}
@GetMapping("/products/{id}")
public Product getProduct(@PathVariable int id){
return service.getProductById(id);
}
}
ProductService.java
@Autowired
private productRepo repo;
public Product getProductById(int id) {
return repo.findById(id).get();
Product.java
public class Product {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int productID;
private String Name;}
Подробнее здесь: [url]https://stackoverflow.com/questions/79100164/how-to-fetch-an-api-from-backend-with-axios-error[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия