无法在1条路线中链接2条请求

时间:2019-01-03 15:26:07

标签: javascript node.js express request

我需要从节点API调用外部API。 为此,我使用https://github.com/request/request-promise-native

可行的示例路线:

df <- data.frame(id = 1:3, code = c("STWX", "STVX", "RTUX"))

str_convert <- function(x) {
  str_replace_all(x, 'T', ' ') %>%
  str_sub(1, -2)
}

df %>% 
   mutate(code = str_convert(code))
  id code code
1  1 STWX S W
2  2 STVX S V
3  3 RTUX R U

问题是我不想打这条路线。在创建方法之后,应该在另一个路由器中调用update方法:

router.get('/update/:id/:value', async (req, res) => {
  const result = await updateMethod(req.params.id, req.params.value);
  res.status(200);
  res.json(result);
});

所以我在mongo中插入了一些数据,我在外部API中(在createMethod内部)发布了一些数据,最后我将一些数据更新/放置到了外部API中。

两个POST都可以,但是PUT失败并显示:

  

{RequestError:错误:写入EPROTO 101057795:error:1408E0F4:SSL   例程:ssl3_get_message:意外消息:openssl \ ssl \ s3_both.c:408

     

{方法:“ PUT”,        uri:'https://externalAPI.com/v1/id/123/value/321',        rejectUnauthorized:假,        标头:         {'x-api-key':'xyz',           'app-user-id':'me'},        json:是,

问题是,如果我手动调用路由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; } }); 而不是/update/:id/:value的方法,则完全相同的PUT方法可以工作

这似乎与更新方法的实现方式无关,因为它在第一条路线中起作用:

/create

我还尝试使用res.redirect重定向到更新路由,但它返回与上述相同的错误。手动调用更新路由可以按预期工作,并且外部API已更新。

1 个答案:

答案 0 :(得分:0)

您绝对可以在Node中链接两个请求,据我所知,您的代码应该可以工作。

您发布的错误消息与SSL有关-节点由于某种原因无法与外部API服务器安全通信。这就是您需要解决的问题。如果外部服务允许,也可以尝试使用HTTP代替HTTPS。