#reactjs #api #axios
#reactjs #API #axios
Вопрос:
У меня есть API deleteUser, который удаляет пользователя из моей базы данных MySQL. мой API отлично работает на postman. nut когда я вызываю свой API из своего приложения react, он возвращает ошибку
Failed to load resource: the server responded with a status of 401 (Unauthorized)
—это мой запрос на удаление—
const handleRowDelete = (oldData, resolve) => {
axios
.post("/deleteUser/" oldData.userId, {
headers: {
Authorization: "Bearer " sessionStorage.getItem("token"),
},
})
.then((res) => {
window.location.reload(false);
})
.catch((error) => {
setErrorMessages(["Update failed! Server error"]);
setIserror(true);
resolve();
});
};
и даже более того, у меня есть un UpdateUser API, который я также вызываю в том же компоненте, и он работает отлично
—это API обновления—
axios
.post("/updateUser/" newData.userId, newData, {
headers: {
Authorization: "Bearer " sessionStorage.getItem("token"),
},
})
.then((res) => {
window.location.reload(false);
})
.catch((error) => {
setErrorMessages(["Update failed! Server error"]);
setIserror(true);
resolve();
});
} else {
setErrorMessages(errorList);
setIserror(true);
resolve();
}
это точно то же самое, но API удаления не работает, я не могу понять, почему. (401 неавторизованный)
Ответ №1:
Вы передаете свои заголовки в качестве второго аргумента axios.post
, но на самом деле это должен быть третий аргумент. Второй аргумент data
.
axios.post(
"/deleteUser/" oldData.userId,
{}, // add empty object or null here as second argument
{
headers: {
Authorization: "Bearer " sessionStorage.getItem("token"),
},
})
Кроме того, если вы можете изменить свой API, было бы лучше использовать DELETE
метод для удаления пользователя, а не POST
. (и тогда ваш код будет работать, потому что axios.delete
принимает заголовки в качестве второго аргумента)