Webonyx/Graphql-php用cURL请求时API echo输出混入页面如何解决
问题解决方法
核心问题修复
你出现该问题的根本原因是cURL配置错误:CURLOPT_RETURNTRANSFER参数设置为false时,curl_exec()执行后会直接把API返回的JSON内容输出到当前页面的输出流,不会将结果赋值给$result变量,才会导致JSON串直接出现在页面源码里。
只需将该参数修改为true即可解决问题:
// 原代码:curl_setopt($chObj, CURLOPT_RETURNTRANSFER, false); curl_setopt($chObj, CURLOPT_RETURNTRANSFER, true);
可选优化建议
1. 接口端添加终止执行逻辑
为了避免API接口输出JSON后,还有后续代码输出多余内容,可以在接口端echo输出后添加终止语句:
header('Content-Type: application/json'); echo json_encode($output); exit; // 终止后续所有代码执行,避免多余输出
2. cURL添加请求头声明
明确指定请求的Content-Type为JSON,避免部分环境下接口无法正常解析请求参数:
curl_setopt($chObj, CURLOPT_HTTPHEADER, [ 'Content-Type: application/json' ]);
3. 修正variables参数格式
你当前代码中$variables赋值为空字符串,不符合GraphQL请求规范,建议修改为空数组或空对象,避免参数解析异常:
// 原代码:$variables = ""; $variables = new stdClass(); // 或 $variables = [];
内容的提问来源于stack exchange,提问作者Alex Abreu Mulet
相关产品推荐
相关产品推荐

