簡體   English   中英

如何使用Curl同時進行GET和POST?

[英]How do I GET and POST at the same time with Curl?

我有一個正常工作的“ API”,但注意到它不是REST,因為我只是在使用POST請求傳遞一個mode變量來確定要執行的操作。 所以現在我要更改與mode變量匹配的條件,以使它們與HTTP Method匹配。 但是我的問題來了。

在每個請求中,我通過POST提交了一個user和一個data + user private keyHMAC 因此,在我想要獲取確定的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'創建自定義標頭
  • 欺騙cURL,提交POST數據,但為GET定義CURLOPT_CUSTOMREQUEST

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM