使用Node and Express,如何从server.get(..)内部调用远程API

时间:2019-02-19 14:04:14

标签: node.js express

由于CORS问题,我想从节点快递服务器内部调用外部REST API。也就是说,我有类似这样的代码,因为它不会返回,因此显然不起作用。

如何进行这项工作并返回外部呼叫的结果?

const server = express();
server.put('/callme',(req,res) => {
      axios
        ('http://weather.com/restapi', 'put', { zip: 10530 })
        .then((resp: any) => {
            console.log(' success' + resp.data);
        })
        .catch(function(error: any) {
            console.log(error.message);
        });
}

1 个答案:

答案 0 :(得分:0)

Axios返回一个Promise,它在.then()中被解析。为了将响应数据返回给客户端,您需要使用res.send()将其返回。

const server = express();
server.get('/callme', (req, res) => {
  axios
    .get('http://weather.com/restapi?zip=10530')
    .then((resp: any) => {
      res.send(resp.data);
    })
    .catch(function(error: any) {
      console.log(error.message);
    });
}

将天气API响应缓存一段时间并为后续请求提供缓存的响应是一个好主意。