我有一个工作" API"但是注意到它不是REST,因为我只是使用POST
个请求传递mode
变量来确定要执行的操作。现在,我正在更改与mode
变量匹配的条件,以便它们匹配HTTP Method
。但问题出现了。
在我通过POST提交的每个请求user
和HMAC
data + user private key
。因此,在我希望获得确定id
的数据的情况下,我使用curl
来创建包含这些变量的请求,并将其POST到URL api/id
。然后有一个RewriteRule用于将其更改为api.php?id=$1
,因此在我的api.php
我有两个数据,id
通过GET
和通过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);
}
答案 0 :(得分:0)
好的,有两种方法可以处理这种情况。
POST
提交身份验证信息,而是使用CURLOPT_HTTPHEADER'
POST
数据,但将CURLOPT_CUSTOMREQUEST
定义为GET
。