首页 > 解决方案 > 将整个传入数据传递给 curl - Laravel

问题描述

我想将整个传入数据(即$request)传递给 curl,不想发布到端点中的特定字段,subjectId=>1因为我每次都针对不同的 endPoint 运行此 curl 请求。如果给出 , 下面的 curl 请求将起作用 CURLOPT_URL => $url . $subjectId。由于每个端点的输入都发生了变化,我必须将输入中的所有内容传递给 curl ,我不能将其作为 arary 传递$subjectId。有没有办法做到这一点?

目前,dd($Response);退货null

我给邮递员这样的输入:

{
   "subjectId":"1"
}

卷曲

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";
        $subjectId = "?subjectId=$request->subjectId";
        $ch = curl_init();
        $curlConfig = array(
         //   CURLOPT_URL            => $url . $subjectId,
         CURLOPT_URL            => $url . $request,
            
            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 = trim(curl_exec($ch));
       
        $Response = json_decode($result, true);
        
        if (curl_errno($ch)) {
            $error_msg = curl_error($ch);
            echo $error_msg;
        }

        curl_close($ch);

        return $Response;
    }

标签: phplaravelcurllaravel-8php-curl

解决方案


如果您想将 $request 的所有参数传递给 curl:

$queryParams  = '';
$delimeter = '?';
foreach($request->all() as $k => $v){
    $queryParams .= "$delimeter$k=$v";
    $delimeter = '&';
}

你也只能传递你想要的参数:

foreach($request->only(['subjectId']) as $k => $v){
    // code here
}

最后你有:

CURLOPT_URL            => $url . $queryParams,

推荐阅读