编程语言
首页 > 编程语言> > 如何创建一个简单的PHP API处理程序?

如何创建一个简单的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