You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何将全部传入请求数据完整传递给curl请求

问题原因
  • 你当前直接将$request对象拼接到URL后的写法是错误的:$request是Illuminate\Http\Request类的实例,直接做字符串拼接无法输出符合规范的查询参数格式,会导致请求的目标地址非法,接口返回非JSON内容,最终json_decode解析后返回null
  • 你需要先将请求携带的所有参数转为对应格式后再传递给curl
实现方案

根据你调用的目标接口请求方式,对应选择以下适配方案即可,不需要单独处理每个入参字段:

场景1:目标接口为GET请求(你当前代码使用的是GET)

通过http_build_query将所有请求参数自动转为key1=value1&key2=value2格式的查询串,拼接在URL后即可:

public function getContentqApiPost(Request $request) 
{
    $token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey";
    $headers = [
        "Accept: application/json",
        "Authorization: Bearer " . $token
    ];
       
    $url = "http://127.0.0.1:9000/api/courses/course-per-subject";
    // 获取所有请求参数,自动拼接为标准查询字符串
    $queryString = http_build_query($request->all());
    $fullUrl = $url . '?' . $queryString;

    $ch = curl_init();
    $curlConfig = array(
        CURLOPT_URL            => $fullUrl,
        CURLOPT_CUSTOMREQUEST => "GET",
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => $headers, 
    );
         
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
    curl_setopt_array($ch, $curlConfig);
        
    $result = curl_exec($ch);
       
    if (curl_errno($ch)) {
        $error_msg = curl_error($ch);
        echo $error_msg;
        curl_close($ch);
        return null;
    }
    curl_close($ch);

    $Response = json_decode(trim($result), true);
    return $Response;
}

场景2:目标接口为POST请求(接收JSON格式参数)

如果接口要求参数放在请求体中传递,直接将所有请求参数转成JSON后赋值给CURLOPT_POSTFIELDS即可,核心配置修改如下:

$curlConfig = array(
    CURLOPT_URL            => $url,
    CURLOPT_CUSTOMREQUEST => "POST",
    CURLOPT_RETURNTRANSFER => true,
    // 新增JSON格式请求头
    CURLOPT_HTTPHEADER => array_merge($headers, ["Content-Type: application/json"]), 
    // 所有参数转JSON后放在请求体传递
    CURLOPT_POSTFIELDS => json_encode($request->all())
);

内容的提问来源于stack exchange,提问作者user16772834

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:24:04