javascript - Node 在本地 get 请求中请求外部 API

标签 javascript node.js api asynchronous

当我执行本地 GET 请求时,我尝试提供外部 API 调用的响应,但正在努力解决如何使其正常工作的问题。

我现在的代码是:

app.get('/', function(req, res){
  request.post('http://data.fixer.io/api/latest?access_key=' + apikey + 
'&symbols=gbp', function(err, res, body) {
    console.log(body)
  })
  res.render('index')
})

我对回调和异步编程的知识和经验有限,但是如何将请求 POST 的响应传递到 GET 请求中,然后将其传递到索引?

谢谢!

最佳答案

回调可能很难理解,并且您描述的问题并不罕见(它甚至有一个名称 - Callback Hell )。 Node 引入 async/await 语法的部分原因 - 这是该风格的代码的等效内容

app.get('/', async (req, res, next) => {
  try {
    const uri = `http://data.fixer.io/api/latest?access_key=${apikey}&symbols=gbp`;
    const data = await request.post(uri);
    return res.render('index', { data }); // or pass whatever you need from `data` into the view
  } catch (e) {
    return next(e);
  }
}

注意到一个很大的区别了吗?没有回调,您可以获得异步代码的所有相同好处以及以同步风格编写代码的好处。

关于javascript - Node 在本地 get 请求中请求外部 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51098391/

相关文章:

javascript - 网页可以检测到篡改用户脚本吗?

node.js - es6 导出/导入多个类 - instanceof 返回 false

api - 邮政编码查询API?

javascript - 使用 OS.File 将 JSON 持久存储在文件中

javascript - 如何在单击复选框时改进和分配 var 并修改对象属性?

javascript - 升级到 Angular 1.4 后我的指令中断

node.js - 无服务器函数在 lambda 上总是超时

node.js - Heroku connect.sessions() 内存泄漏,未缩放

php - Laravel API : RegisterController set a default value on creating an User not working

api - REST 中的建模操作