[英]How do I GET and POST at the same time with Curl?
我有一個正常工作的“ API”,但注意到它不是REST,因為我只是在使用POST
請求傳遞一個mode
變量來確定要執行的操作。 所以現在我要更改與mode
變量匹配的條件,以使它們與HTTP Method
匹配。 但是我的問題來了。
在每個請求中,我通過POST提交了一個user
和一個data + user private key
的HMAC
。 因此,在我想要獲取確定的id
的數據的情況下,我使用curl
來創建帶有這些變量的請求,並將其發布到URL api/id
。 然后有一個RewriteRule,將其更改為api.php?id=$1
,所以在我的api.php
我同時擁有兩個數據,即通過GET
獲得的id
和通過POST
獲得的身份驗證信息。
所以...如果要獲取用戶的數據,我現在需要使用GET
方法,那么如何也可以提交(POST)身份驗證信息?
以前的樣子(可以工作但不能作為REST API來工作)
api.php
if ($_SERVER["REQUEST_METHOD"] === "POST"){
if ($_POST['mode'] === "get"){
get_data($_GET["id"]);
}
}
client.php
$params = array('user' => 'qwerty', 'hash' => 'jFJKSAFhskafa');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/api/123";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, count($params));
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$output = curl_exec($ch);
curl_close($ch);
$data = json_decode($output, true);
}
應該如何:
api.php
if ($_SERVER["REQUEST_METHOD"] === "GET"){
get_data($_GET["id"]);
}
client.php
$params = array('user' => 'qwerty', 'hash' => 'jFJKSAFhskafa');
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://localhost/api/123";
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
//-------->>>> How do I send the params now?
$output = curl_exec($ch);
curl_close($ch);
$data = json_decode($output, true);
}
好的,有兩種方法可以處理這種情況。
POST
提交身份驗證信息,而是使用CURLOPT_HTTPHEADER'
創建自定義標頭 POST
數據,但為GET
定義CURLOPT_CUSTOMREQUEST
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.