PHP curl POST请求转换为Firebase可用的Typescript Fetch实现问题
修正后的Fetch实现代码
const apiKey = "myAPIkey"; const url = "https://profootballapi.com/schedule"; // 构造表单参数,等价于PHP中的$query_string,自动处理编码避免拼接错误 const body = new URLSearchParams({ api_key: apiKey, year: "2014", week: "7", season_type: "REG" }); const response = await fetch(url, { method: 'POST', body: body, headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' }, // 如果运行时出现SSL证书校验错误,取消下面这行的注释,等价于PHP的CURLOPT_SSL_VERIFYPEER=false // rejectUnauthorized: false }); if (!response.ok) { // 处理请求错误,比如打印状态码 functions.logger.error("请求失败,状态码:", response.status); } // 解析响应内容,等价于PHP中curl_exec返回的$result const result = await response.text(); functions.logger.log("接口返回结果:", result); // 如果接口返回的是JSON格式,可以换成下面的写法解析 // const result = await response.json();
对应关系说明
- PHP中拼接的
$query_string对应fetch配置的body参数,使用URLSearchParams构造可以避免手动拼接字符串出现的符号遗漏、转义错误问题,你原草稿中就是手动拼接时遗漏了season_type的赋值符号和取值REG,同时语法不符合TS规范 - 保留了你设置的
application/x-www-form-urlencoded请求头,和PHP curl的默认POST表单行为一致 response.text()/response.json()用于读取返回的响应内容,你原代码中直接读取response.body拿到的是可读流对象,无法直接获取接口返回的文本内容- 若在Firebase云函数运行时出现SSL证书校验失败的问题,可以补充
rejectUnauthorized: false配置,等价于PHP中的CURLOPT_SSL_VERIFYPEER=false
内容的提问来源于stack exchange,提问作者Jim
相关产品推荐
相关产品推荐

