您需要知道要调用的REST API是否支持 GET 或 POST ,或两种方法 . 下面的代码对我有用,我正在调用我自己的Web服务API,所以我已经知道API需要什么以及它将返回什么 . 它支持 GET 和 POST 方法,因此不太敏感的信息会进入 URL (GET) ,而用户名和密码等信息将作为 POST 变量提交 . 此外,一切都超过 HTTPS 连接 .
/*
* @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();
1
使用Guzzle . 这是"PHP HTTP client that makes it easy to work with HTTP/1.1 and takes the pain out of consuming web services" . 使用Guzzle比使用cURL更容易 .
12 回答
您可以使用POSTMAN,这是一个简化API的应用程序 . 填写请求字段,然后它将以不同的语言为您生成代码 . 只需点击右侧的代码,然后选择您喜欢的语言 .
正如@Christoph Winkler所说,这是实现它的基类:
curl_helper.php
然后你可以随时包含文件并使用它,例如:any.php
如果你有一个网址并且你的php支持它,你可以调用file_get_contents:
如果$ response是JSON,请使用json_decode将其转换为php数组:
如果$ response是XML,请使用simple_xml类:
http://sg2.php.net/manual/en/simplexml.examples-basic.php
您需要知道要调用的REST API是否支持
GET
或POST
,或两种方法 . 下面的代码对我有用,我正在调用我自己的Web服务API,所以我已经知道API需要什么以及它将返回什么 . 它支持GET
和POST
方法,因此不太敏感的信息会进入URL (GET)
,而用户名和密码等信息将作为POST
变量提交 . 此外,一切都超过HTTPS
连接 .在API代码中,我编码一个我想要返回json格式的数组,然后只需使用PHP命令
echo $my_json_variable
使json字符串可用于客户端 .正如您所看到的,我的API返回json数据,但您需要知道(或查看返回的数据以找出)API的响应的格式 .
这是我从客户端连接到API的方式:
顺便说一句,我也尝试使用
file_get_contents()
方法作为这里建议的一些用户,但这对我来说效果不错 . 我发现curl
方法更快更可靠 .如果您愿意使用第三方工具,请查看此工具:https://github.com/CircleOfNice/DoctrineRestDriver
这是一种使用API的全新方式 .
首先,您定义一个实体,该实体定义传入和传出数据的结构,并使用数据源对其进行注释:
现在,与REST API进行通信非常简单:
使用Guzzle . 这是"PHP HTTP client that makes it easy to work with HTTP/1.1 and takes the pain out of consuming web services" . 使用Guzzle比使用cURL更容易 .
这是网站上的一个例子:
CURL是最简单的方法 . 这是一个简单的电话
您可以使用PHP
cURL
Extension访问任何REST API . 但是,API文档(方法,参数等)必须由您的客户提供!例:
如果您正在使用Symfony,那么一个很棒的休息客户端包甚至包含所有~100个异常并抛出它们而不是返回一些无意义的错误代码消息 .
你应该检查一下:https://github.com/CircleOfNice/CiRestClientBundle
我喜欢这个界面:
适用于所有http方法 .
除了函数名称建议的
GET
方法之外,您还可以使用file_get_contents
发出任何httpPOST/PUT/DELETE/OPTIONS/HEAD
方法 .How to post data in PHP using file_get_contents?
实际上有很多客户 . 其中一个是Pest - 看看这个 . 请记住,这些REST调用是使用各种方法的简单http请求:GET,POST,PUT和DELETE .
使用HTTPFUL
Httpful是一个简单,可链接,可读的PHP库,旨在使HTTP健全 . 它允许开发人员专注于与API交互,而不是通过curl set_opt页面进行筛选,是一个理想的PHP REST客户端 .
Httpful包括......
可读的HTTP方法支持(GET,PUT,POST,DELETE,HEAD和OPTIONS)
自定义 Headers
自动"Smart"解析
自动有效负载序列化
Basic Auth
客户端证书验证
索取"Templates"
防爆 .
Send off a GET request. Get automatically parsed JSON response.
该库在响应中注意到JSON Content-Type,并自动将响应解析为本机PHP对象 .