#node.js #express #node-fetch
#node.js #экспресс #узел-выборка
Вопрос:
Я пытаюсь подключиться к сторонней конечной точке из своего приложения express. С конкретным телом, выполняющим тот же запрос в curl непосредственно к этой конечной точке, я получаю статус 400 с конкретным сообщением об ошибке.
Теперь, используя экспресс выборку узла, я получаю сообщение об ошибке, но получаю код состояния 200.
export async function authenticate() {
const result = await fetch(`${config.host}/token`, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
body: JSON.stringify({
key: "someValueThatShouldReturnError"
})
});
console.log(result.status); // this prints 400
const json = await result.json();
return json;
}
И в маршрутизаторе у меня есть
router.post('/auth', handleErrorAsync(async(req: any, resp: Response, err: any) => {
let res = await authenticate();
resp.send(res);
}));
временное решение — добавить это в асинхронную функцию после объявления json
переменной .. Но я чувствую, что это должно быть обработано из коробки.
if (result.status !== 200) {
throw createError(result.status, json.error);
}
Комментарии:
1.
resp.status(res.status).send(res)
ссылка2. какова цель этой строки ` const json = await result.json(); `
3. @MAS для преобразования ответа с сервера в JSON. Без этого я получаю ответ
{ "size": 0, "timeout": 0 }
4. попробуйте это,
const status = result.status; const json = await result.json();
затем верните оба значения;return {status , json}
,const { json, status } = await authenticate();
5. @MAS да, это работает, но экспресс не должен обрабатывать это автоматически? :O