Как я могу отправить узлу сообщение об ошибке запроса JS Axios? Я не хочу печатать ошибку в консоли, я хочу отправить ее в приложение.
Например, если я тестирую postman и нажимаю localhost:8080/list/2, а 2 — неправильный идентификатор, вместо того, чтобы бесконечно показывать sending request, я хочу, чтобы возвращалось конкретное сообщение об ошибке JSON.
**server.js** proxy server running on localhost:8000 makes request to another endpoint
app.get("/list/:id", function (req, res) {
const { id } = req.params;
axios
.get(`${BASE_URL}/list/` + id)
.then((response) => {
res.send(response.data)
})
.catch((error) => {
if (error.response) {
res.send(error.response)
}
});
});
2. Как можно использовать это сообщение об ошибке в запросе Axios на стороне клиента?
const getList = () => {
axios
.get("http://localhost:8000/list", {
params: {
id: '4'
}
})
.then((resp) => {
const data = resp.data;
console.info(resp.data)
})
.catch((err) => {
console.error(err);
});
};
Вы перепутали параметры маршрута и запроса. Вместо этого используйте axios.get("http://localhost:8000/list/4"). Параметр params предназначен для создания параметров запроса.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


error.response — это объект Axios Response, который не очень хорошо сериализуется в JSON.
Вы должны ответить со статусом ответа восходящего потока и данными
app.get("/list/:id", async (req, res, next) => {
const { id } = req.params;
try {
const { data } = await axios.get(`/list/${id}`, {
baseURL: BASE_URL,
});
res.send(data);
} catch (err) {
if (err.response) {
res
.status(err.response.status) // proxy the status
.send(err.response.data); // proxy the data
}
next(err); // some other error
}
});
К вашему сведению, опция Axios params предназначена для построения параметров запроса URL. Ваш клиентский запрос должен использовать
axios.get("http://localhost:8000/list/4")
К вашему сведению, у Express гораздо более простая библиотека прокси — express-http-proxy
const proxy = require('express-http-proxy');
app.use("/list", proxy(BASE_URL, {
https: true,
proxyReqPathResolver: (req) => req.originalUrl,
}));
Когда вы передаете правильный идентификатор, вы видите ответ в почтальоне? если да, то я предполагаю, что ваш объект ошибки не имеет свойства ответа, и поэтому он не входит внутрь блока if.