我想把整個傳入的資料(也就是$request)傳遞給curl,而不是作為subjectId=>1發布到端點中的一個特定欄位,因為我每次都為不同的端點運行這個curl請求。如果給出CURLOPT_URL => $url . $subjectId,下面的curl請求就能作業。由于我的輸入在每個端點都會改變,我必須把輸入的所有內容傳遞給curl,我不能把它作為一個arary $subjectId傳遞。有什么方法可以做到這一點嗎?
目前,dd($Response);回傳null
我給一個postman的輸入是這樣的:
{
"subjectId":"1"。
}
Curl
public function getContentqApiPost(Request $request)
{
$token = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.ey"/span>。
$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;
}
uj5u.com熱心網友回復:
如果你想把$request的所有引數傳給curl:
$queryParams = ''/span>;
$delimeter = '? ';
foreach($request->all() as $k => $v){
$queryParams .= "$delimeter$k=$v" /span>;
$delimeter = '& '。
}
另外,你只能傳遞你想要的引數:
foreach($request-> only(['subjectId']) as $k => $v){
//代碼在此。
}
最后你有:
CURLOPT_URL => $url . $queryParams。
uj5u.com熱心網友回復:
答案是
。假設你想按原樣傳遞整個GET查詢字串:
$query_string = str_replace($request-> url(), "", $request-> fullUrl())。
$url = "http://localhost:9000/api/courses/course-per-subject" . $query_string。
這樣做是因為$request->url()回傳不帶查詢字串引數的URL,而$request->fullUrl()回傳帶有所有查詢字串引數的URL,所以我們可以使用str_replace,用一個空替換來洗掉非查詢部分。注意,$query_string將已經以?開始,所以不需要自己添加。
其他建議除非你的Laravel API是1:1復制的后臺API, 我強烈建議寫一個與后臺API介面的類, 然后使用依賴注入提供給你的Laravel控制器. 例如:
class CourseCatalogApi {
public function getSubjectsIn title">getSubjectsInCourse(String $course){
... //你的curl代碼在這里。
}
}
最后, 既然你已經在使用Laravel, 就沒有必要用curl來寫這種低級別的代碼來進行HTTP請求。可以考慮使用guzzlehttp,它已經是Laravel的一個依賴。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/324217.html
標籤:
