在 PHP 中调用 REST API

2022-08-30 05:57:06

我们的客户给了我一个REST API,我需要对它进行PHP调用。但实际上,API给出的文档非常有限,因此我真的不知道如何调用该服务。

我试图用谷歌搜索它,但唯一出现的是一个已经过期的Yahoo!教程,关于如何调用该服务。没有提到标题或任何深入的信息。

关于如何调用REST API或一些关于它的文档,是否有任何像样的信息?因为即使在W3schools中,它们也只描述了SOAP方法。在PHP中制作API的其余部分有哪些不同的选项?


答案 1

您可以使用 PHP 扩展访问任何 REST API。但是,API文档(方法,参数等)必须由您的客户提供!cURL

例:

// Method: POST, PUT, GET etc
// Data: array("param" => "value") ==> index.php?param=value

function CallAPI($method, $url, $data = false)
{
    $curl = curl_init();

    switch ($method)
    {
        case "POST":
            curl_setopt($curl, CURLOPT_POST, 1);

            if ($data)
                curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
            break;
        case "PUT":
            curl_setopt($curl, CURLOPT_PUT, 1);
            break;
        default:
            if ($data)
                $url = sprintf("%s?%s", $url, http_build_query($data));
    }

    // Optional Authentication:
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, "username:password");

    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

    $result = curl_exec($curl);

    curl_close($curl);

    return $result;
}

答案 2

如果你有一个url并且你的php支持它,你可以调用file_get_contents:

$response = file_get_contents('http://example.com/path/to/api/call?param1=5');

如果$response是 JSON,请使用 json_decode 将其转换为 php 数组:

$response = json_decode($response);

如果$response是 XML,请使用simple_xml类:

$response = new SimpleXMLElement($response);

http://sg2.php.net/manual/en/simplexml.examples-basic.php


推荐