如何在Express服务中调用外部API完成返回比特币卢比价格的任务
Express服务调用第三方API实现方案
1. 环境准备
先执行以下命令初始化项目、安装依赖:
- 初始化npm项目:
npm init -y - 安装所需依赖:
npm install express axios
这里用axios作为HTTP请求库,比Node内置的http模块写法更简洁,适合新手快速实现。
2. 编写服务代码
在项目根目录新建index.js文件,写入以下代码:
const express = require('express'); const axios = require('axios'); const app = express(); const PORT = 3000; // 定义USD转INR的汇率,可根据实时汇率更新 const USD_TO_INR_RATE = 83.2; // 示例汇率,实际使用可对接汇率API获取实时值 app.get('/api/prices', async (req, res) => { try { // 调用第三方公开API获取比特币价格 const thirdPartyRes = await axios.get('https://api.coindesk.com/v1/bpi/currentprice.json'); const bpiData = thirdPartyRes.data.bpi; // 提取所有币种价格,转换为卢比后格式化为两位小数的字符串,存入数组 const inrPrices = Object.values(bpiData).map(item => { // 先统一转为USD计价,再转成INR const usdPrice = item.rate_float / (item.code === 'USD' ? 1 : item.rate_float / bpiData.USD.rate_float); const inrPrice = usdPrice * USD_TO_INR_RATE; return inrPrice.toFixed(2); }); // 返回要求格式的JSON res.json(inrPrices); } catch (error) { // 异常处理,避免服务崩溃 console.error('调用第三方接口失败:', error.message); res.status(500).json({ error: '获取价格失败' }); } }); app.listen(PORT, () => { console.log(`服务运行在 http://localhost:${PORT}`); });
3. 运行测试
- 执行命令启动服务:
node index.js - 打开Postman,发起GET请求到
http://localhost:3000/api/prices,即可得到格式为["xx.xx", "xx.xx", "xx.xx"]的响应。
核心逻辑说明
在Express中调用第三方API的核心是在路由处理函数中发起HTTP请求,你可以根据需求选择不同的请求方案:
- 不想安装额外依赖可以用Node内置的
https模块,不过需要自己处理响应拼接、Promise封装 - 推荐新手用
axios或者node-fetch这类封装好的请求库,天生支持Promise,和async/await搭配写起来逻辑更清晰,不用处理复杂的回调。
如果需要更准确的实时汇率转换,可以对接公开的汇率API获取实时的USD转INR汇率替换代码中的固定值即可。
内容的提问来源于stack exchange,提问作者Nandini Patil
相关产品推荐
相关产品推荐

