在PHP中调用REST API

402
我们的客户提供了一个REST API,要求我用PHP进行调用。但事实上,所提供的API文档十分有限,因此我不知道如何去调用该服务。
我尝试使用谷歌搜索,但搜索结果中只有一个已经过期的Yahoo!教程,而且没有任何关于标头等详细信息的介绍。
请问是否有相关的资料可以帮助我学习如何调用REST API或者提供相应的文档?即使在W3schools,他们也只描述了SOAP方法。在PHP中有哪些不同的选项可以用来调用REST API呢?
12个回答

3
如果您正在使用Symfony框架,有一个非常好的rest客户端bundle,甚至包括所有的~100个异常,并且抛出它们,而不是返回一些无意义的错误代码+信息。
您真应该去看一下: https://github.com/CircleOfNice/CiRestClientBundle 我很喜欢这个界面:
try {
    $restClient = new RestClient();
    $response   = $restClient->get('http://www.someUrl.com');
    $statusCode = $response->getStatusCode();
    $content    = $response->getContent();
} catch(OperationTimedOutException $e) {
    // do something
}

适用于所有的HTTP方法。


0

如果你愿意使用第三方工具,可以看一下这个链接:https://github.com/CircleOfNice/DoctrineRestDriver

这是一种全新的与API交互的方式。

首先,你需要定义一个实体,用来定义传入和传出数据的结构,并使用数据源进行注释:

/*
 * @Entity
 * @DataSource\Select("http://www.myApi.com/products/{id}")
 * @DataSource\Insert("http://www.myApi.com/products")
 * @DataSource\Select("http://www.myApi.com/products/update/{id}")
 * @DataSource\Fetch("http://www.myApi.com/products")
 * @DataSource\Delete("http://www.myApi.com/products/delete/{id}")
 */
class Product {
    private $name;

    public function setName($name) {
        $this->name = $name;
    }

    public function getName() {
        return $this->name;
    }
}

现在与REST API进行通信相当容易:

$product = new Product();
$product->setName('test');
// sends an API request POST http://www.myApi.com/products ...
$em->persist($product);
$em->flush();

$product->setName('newName');
// sends an API request UPDATE http://www.myApi.com/products/update/1 ...
$em->flush();

2
免责声明:您是此软件包的作者。 - Jonas Stensved

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接