如何创建一个简单的PHP API处理程序?
作者:互联网
我使用cURL在PHP中编写了一个基本的API脚本 – 并成功地在另一个API上使用了它的一个版本,这个是专门用于处理DigitalOcean上的域DNS管理 – 我无法发送数据?
序幕…
我知道有一个可用的PHP库,我不是在追求完全特色或依赖的臃肿的东西 – 只是在本地使用的小东西,主要是为了帮助我理解RESTful API如何在实践中更好地工作 – 一个教育练习
违规代码……
function basic_api_handle($key, $method, $URI, $data) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Authorization: Bearer '.$key,
'Content-Type: application/json')
);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
curl_setopt($ch, CURLOPT_URL, $URI);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
$result = curl_exec($ch);
if($result === false) error_log("API ERROR: Connection failure: $URI", 0);
curl_close($ch);
return json_decode($result, true);
}
var_dump(basic_api_handle($api_key, 'POST', 'https://api.digitalocean.com/v2/domains', array('name' => 'my-domain.tld', 'ip_address' => '1.2.3.4')));
这适用于GET请求,例如列出帐户上的域但似乎在发布/发送数据时失败…这导致“unprocessable_entity”和“名称不能为空” – 因为名称不是空白的格式正确(据我所知),它告诉我数据没有正确发送?
解决方案到目前为止尝试…
我已经尝试过json编码数据(在代码中看到),而不是json编码,带有和不带json编码的url编码以及其他没有运气的选项.
我在网上看到了一些关于这个完全相同的问题的帖子,特别是与DigitalOcean的API(和另一个),但没有人有解释(除了放弃和使用库或其他影响).
直接从终端使用cURL确实有效,因此用于创建域的API没有任何问题.
据我所知,身份验证工作正常,一般设置正常,因为我可以在帐户中列出域名,我只是不能POST或PUT新数据.我一直在看API’s documentation并且看不出我做错了什么,也许是某种错误的编码?
任何帮助将非常感激!
标签:json,php,rest,curl,digital-ocean 来源: https://codeday.me/bug/20190710/1428014.html