如何在Node.js程序中正确调用部署在Heroku的概率计算API?
Node.js 调用Heroku部署API的正确实现方案
错误排查方向
invalid URI错误通常由以下两种原因导致:
- 请求URL拼写错误,存在多余空格、换行或特殊转义字符
request包的参数配置格式错误,URI字段名写错或传入非字符串类型值
1. 使用request包实现(该包已官方弃用,仅兼容旧项目)
首先安装依赖:
npm install request
server.js 代码示例:
const request = require('request'); // 替换为实际业务传入的5个数值参数 const value1 = 1.0, value2 = 2.3, value3 = 0.5, value4 = 4.2, value5 = 3.1; const requestOptions = { uri: 'https://apibc1.herokuapp.com/predict', method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ Values: [[value1, value2, value3, value4, value5]] }) }; request(requestOptions, (error, response, body) => { if (error) { console.error('请求失败:', error); return; } if (response.statusCode === 200) { const predictResult = JSON.parse(body); console.log('概率结果:', predictResult); } else { console.log('接口异常,状态码:', response.statusCode); } });
2. 推荐使用axios实现(当前主流HTTP请求库)
首先安装依赖:
npm install axios
server.js 代码示例:
const axios = require('axios'); // 替换为实际业务传入的5个数值参数 const value1 = 1.0, value2 = 2.3, value3 = 0.5, value4 = 4.2, value5 = 3.1; axios.post('https://apibc1.herokuapp.com/predict', { Values: [[value1, value2, value3, value4, value5]] }, { headers: { 'Content-Type': 'application/json' } }).then(res => { console.log('概率结果:', res.data); }).catch(err => { console.error('请求失败:', err); });
注意事项
- 始终使用
JSON.stringify()处理请求体,不要手动拼接JSON字符串,避免引号转义错误 - 若仍报URI错误,可打印传入的URI参数确认没有多余非法字符
- Heroku免费实例会自动休眠,首次请求可能响应较慢,可按需添加超时配置
内容的提问来源于stack exchange,提问作者Juan Felipe Jaramillo Losada
相关产品推荐
相关产品推荐

