Firebase自定义函数中改写Axios POST请求调用第三方API
Firebase云函数实现第三方API POST请求
步骤1:安装依赖
在你的Firebase云函数目录下执行:
npm install axios
步骤2:配置环境变量(安全存储敏感信息)
把第三方API的URL、用户名、密码存到Firebase环境变量里,避免硬编码:
firebase functions:config:set api.url="你的第三方API地址" api.username="你的用户名" api.password="你的密码"
完整云函数代码
const functions = require("firebase-functions"); const axios = require("axios"); exports.submitThirdPartyRequest = functions.https.onRequest(async (req, res) => { // 从请求体获取前端传入的参数 const { phone, email, maxMorgageBudget, mortPurpose, income } = req.body; // 从环境变量读取敏感配置 const apiConfig = functions.config().api; const API_URL = apiConfig.url; const AUTH_USERNAME = apiConfig.username; const AUTH_PASSWORD = apiConfig.password; try { const response = await axios.post( API_URL, { order: { category_id: 7, status_id: 1, aff_source_id: 1, }, person: { name: "n-a", surname: "n-a", phone: phone, email: email, }, extend: { amount: maxMorgageBudget, repayment_time: 30, fixation: 5, house_value: maxMorgageBudget * 1.1, mortgage_purpose_id: mortPurpose, income: income, }, organization: 2, }, { headers: { "Content-Type": "application/json" }, auth: { username: AUTH_USERNAME, password: AUTH_PASSWORD, }, } ); // 返回第三方API的响应给前端 res.status(200).json(response.data); } catch (error) { functions.logger.error("请求第三方API失败", error); // 处理不同类型的错误并返回给前端 if (error.response) { res.status(error.response.status).json(error.response.data); } else { res.status(500).json({ error: "请求第三方API时发生未知错误" }); } } });
关键说明
- 用
functions.https.onRequest创建HTTP触发的云函数,前端可通过云函数的URL发起请求,将phone、email等参数放在请求体中 - 敏感信息(API地址、账号密码)通过Firebase环境变量管理,避免代码泄露风险
- 使用
async/await替代Promise链式调用,提升代码可读性 - 完善错误处理,将第三方API的错误信息或内部错误返回给前端,同时用
functions.logger记录错误日志便于排查
内容的提问来源于stack exchange,提问作者WhyMe
相关产品推荐
相关产品推荐

