我要求的API需要GET
HTTP方法
我想避免像
这样的事情 例如 domain.com/api/v1/module/user?access_token=er78e9wr7fasf7s9a8fsd7fa8f7sa8f
。
我宁愿能够请求
domain.com/api/v1/module/user
并在标题中设置access_token值,我知道你可以用post做到这一点,但我想为GET方法做这个。
我目前有以下
public function fetch()
{
$response = json_decode(
$this->prepareRequest(
new \Web\Curl\Wrapper,
$this->prepareRequestURL()
)->execute()
);
}
private function prepareRequestURL()
{
return $this->apiConfig->getBaseDomain() . $this->apiConfig->getUserSelfURL();
}
private function prepareRequest(\Web\Curl\Wrapper $curlWrapper, $url)
{
$curlWrapper->init($url);
$curlWrapper->setOption(CURLOPT_RETURNTRANSFER, 1);
$curlWrapper->setOption(CURLOPT_HTTPHEADER, array(
$this->apiConfig->getAccessTokenKey() => $_SESSION[$this->apiConfig->getAccessTokenKey()]
));
return $curlWrapper;
}
我的卷曲包装类
private $curl;
public function init($requestLocation = null)
{
$this->curl = curl_init($requestLocation);
}
public function preparePost($postData)
{
$this->setOption(CURLOPT_POST, 4);
$this->setOption(CURLOPT_POSTFIELDS, $postData);
$this->setOption(CURLOPT_SSL_VERIFYPEER, false);
$this->setOption(CURLOPT_RETURNTRANSFER, true);
}
public function execute()
{
return curl_exec($this->curl);
}
public function setOption($option, $value)
{
curl_setopt($this->curl, $option, $value);
}
答案 0 :(得分:1)
...并在标题中设置access_token值,我知道你可以这样做 这有帖子,但我想为GET方法做这个。
对于任何类型的请求(POST
,GET
等,以相同的方式设置HTTP标头。
您的代码的问题是您以错误的方式设置标头。 CURLOPT_HTTPHEADER
选项需要数字索引数组,而不是关联数组。此外,每个数组元素都应该是"key: value"
格式的字符串。
因此,您必须在prepareRequest
方法中进行此类更改:
...
$key = $this->apiConfig->getAccessTokenKey();
$value = $_SESSION[$token];
$curlWrapper->setOption(CURLOPT_HTTPHEADER, array(
"$key: $value"
));
...