erwin32 / rest
Rest客户端分支
This package is not auto-updated.
Last update: 2024-09-28 15:03:17 UTC
README
(c) 2013 Travis Dent tcdent@gmail.com
基本用法
$api = new RestClient(array(
'base_url' => "https://api.twitter.com/1.1",
'format' => "json",
// https://dev.twitter.com/docs/auth/application-only-auth
'headers' => array('Authorization' => 'Bearer '.OAUTH_BEARER),
));
$result = $api->get("search/tweets", array('q' => "#php"));
// GET http://api.twitter.com/1.1/search/tweets.json?q=%23php
if($result->info->http_code == 200)
var_dump($result->decode_response());
可配置选项
headers
- 一个包含要包含在每次请求中的HTTP头和值的关联数组。
parameters
- 一个参数关联数组,将在每次请求中与单个请求参数合并。
curl_options
- 应用到每个请求的cURL选项。这些将覆盖任何自动生成的值。
user_agent
- 用户代理字符串。
base_url
- 用于每个请求基础的URL。
format
- 要附加到资源并支持解码的格式。
format_regex
- 从响应Content-Type头中提取格式的模式。
decoders
- 格式解码器的关联数组,请参阅下面的文档。
username
- 用于基本认证的用户名。需要password
。
password
- 用于基本认证的密码。需要username
。
可以在实例化时设置选项,或者之后单独设置
$api = new RestClient(array(
'format' => "json",
'user_agent' => "my-application/0.1"
));
-or-
$api = new RestClient;
$api->set_option('format', "json");
$api->set_option('user_agent', "my-application/0.1");
动词
实现了四个HTTP动词作为便捷方法:get()
、post()
、put()
和 delete()
。每个方法接受三个参数
url
- 请求的资源URL。如果已配置,将使用base_url
选项添加前缀。如果已配置,将使用format
选项添加后缀。
parameters
- 查询参数的关联数组,将在GET
请求中格式化与URL,并在其他请求中通过请求体传递。
headers
- 要包含在请求中的头的关联数组。
可以通过直接调用execute()
来使用任何动词,它接受四个参数:url
、method
、parameters
和 headers
。所有参数期望与便捷方法相同的值,除了额外的 method
参数
method
- 执行请求的HTTP动词。
并非所有端点都支持所有HTTP动词
以下是一些常见解决方案的示例,但完全取决于您访问的端点。请参阅服务的文档,以查看是否需要此操作。
传递一个X-HTTP-Method-Override
头
$result = $api->post("put_resource", array(), array(
'X-HTTP-Method-Override' => "PUT"
));
传递一个_method
参数
$result = $api->post("put_resource", array(
'_method' => "PUT"
));
在请求后填充的属性
response
- 纯文本响应正文。
headers
- 解析后的响应头对象。
info
- cURL响应信息对象。
error
- 响应错误字符串。
直接迭代和响应解码
如果响应数据格式受支持,则响应将被解码,并且可以通过迭代返回的实例来访问。当设置了format
选项时,它将被用于选择解码器。如果没有提供format
选项,将尝试从响应Content-Type
头中提取它。此模式可以通过format_regex
选项进行配置。
$api = new RestClient(array(
'base_url' => "http://vimeo.com/api/v2",
'format' => "php"
));
$result = $api->get("tcdent/info");
foreach($result as $key => $value)
var_dump($value);
也实现了通过ArrayAccess进行读取
var_dump($result['id']);
要访问解码后的响应作为数组,请调用decode_response()
。
“json”和“php”格式配置为分别使用内置的json_decode
和unserialize
函数。可以在实例化时指定重写和额外的解码器,或者在之后单独指定。解码函数接受一个参数:原始请求数据体。使用create_function
创建的函数也可以使用。
function my_xml_decoder($data){
new SimpleXMLElement($data);
}
$api = new RestClient(array(
'format' => "xml",
'decoders' => array('xml' => "my_xml_decoder")
));
-or-
$api = new RestClient;
$api->set_option('format', "xml");
$api->register_decoder('xml', "my_xml_decoder");
或者,不使用运行时函数污染全局作用域。这个特定的例子允许您以数组的形式接收解码后的JSON数据。
$api->register_decoder('json',
create_function('$a', "return json_decode(\$a, TRUE);"));