Из моего API узла мне нужно вызвать внешний API.Для этого я использую https://github.com/request/request-promise-native
Пример маршрута, который работает:
router.get('/update/:id/:value', async (req, res) => {
const result = await updateMethod(req.params.id, req.params.value);
res.status(200);
res.json(result);
});
Проблема в том, что я не хочу вызывать этот маршрут.Метод обновления должен вызываться на другом маршрутизаторе после метода create:
router.post('/create', (req, res, next) => {
mongo.create(data, async (e, createdEntity) => {
const saved = await createMethod(someObject);
const updated = await updateMethod(id, value);
res.status(200);
res.json(createdEntity);
return res;
}
});
Поэтому я вставляю некоторые данные в mongo, я помещаю некоторые данные во внешний API (внутри createMethod) и, наконец, я обновляю / PUT некоторыеданные во внешний API.
Оба POST работают, но PUT не работает с:
{RequestError: Ошибка: запись EPROTO 101057795: ошибка: 1408E0F4: процедуры SSL: ssl3_get_message: неожиданное сообщение: openssl \ ssl \ s3_both.c: 408
{method: 'PUT', uri: 'https://externalAPI.com/v1/id/123/value/321', rejectUnauthorized: false, заголовки: {' x-api-key ':' xyz ', 'app-user-id': 'me'}, json: true,
Проблема в том, что точно такой же метод PUT работает, если я вызываю маршрут /update/:id/:value
вручную, а не методомс /create
Это не похоже на то, как реализован метод обновления, поскольку он работает на первом маршруте:
updateMethod = (id, value) => {
const options = {
method: 'PUT',
uri: `${process.env.API_ENDPOINT}/id/${id}/value/${value}`,
rejectUnauthorized: false,
headers: {
'x-api-key': process.env.API_KEY,
'app-user-id': process.env.API_USER,
},
json: true,
};
return request(options)
.then(response => response)
.catch((e) => {
console.log(e);
});
};
Я также попытался перенаправить на маршрут обновления с помощьюres.redirect, но возвращает ту же ошибку, что и выше.Вызов маршрута обновления вручную работает должным образом, а внешний API обновляется.