educoder/pest

适用于 PHP 的合适 REST 客户端。

1.0.0 2013-11-17 12:58 UTC

This package is not auto-updated.

Last update: 2024-09-24 02:16:43 UTC


README

Pest 是一个针对 RESTful 网络服务的 PHP 客户端库。

Zend_Rest_Client 不同,后者根本不是一个真正的 "REST" 客户端(更像是 RPC-over-HTTP),Pest 支持 REST 的四个动词(GET/POST/PUT/DELETE)并且关注 HTTP 响应状态码。

Composer 安装

要安装 Pest,请使用以下 composer require 语句

{
    "require": {
        "educoder/pest": "1.0.0"
    }
}

基本示例

Pest 的 get/post/put/delete() 方法返回原始响应体作为字符串。如果您正在处理基于 XML 的 REST 服务,请参阅 PestXML(以下)的相关信息;如果您正在处理 JSON,请参阅 PestJSON。

<?php

$pest = new Pest('http://example.com');

$thing = $pest->get('/things');

$thing = $pest->post('/things', 
	array(
		'name' => "Foo",
		'colour' => "Red"
	)
);

$thing = $pest->put('/things/15',
	array(
		'colour' => "Blue"
	)
);

$pest->delete('/things/15');

?>

错误状态码(4xx 和 5xx)的响应会抛出异常。

<?php

try {
	$thing = $pest->get('/things/18');
} catch (Pest_NotFound $e) {
	// 404
	echo "Thing with ID 18 doesn't exist!";
}

try {
	$thing = $pest->post('/things',  array('colour' => "Red"));
} catch (Pest_InvalidRecord $e) {
	// 422
	echo "Data for Thing is invalid because: ".$e->getMessage();
}

?>

PestXML

PestXML 是一个以 XML 为中心的 Pest 版本,专门针对返回 XML 数据的 REST 服务。PestXML 不会将原始响应体作为字符串返回,而是尝试将服务的响应解析为 SimpleXML 对象。

<?php

$pest = new Pest('http://example.com');

$things = $pest->get('/things.xml');

$colours = $things->xpath('//colour');
foreach($colours as $colour) {
	echo $colour."\n";
}

?>

类似地,PestJSON 是一个以 JSON 为中心的 Pest 版本。

更详细的示例可在 examples 目录中找到

待办事项

  • 身份验证
  • 跟随重定向

许可证

版权所有 (C) 2011,多伦多大学

特此授予任何获得本软件及其相关文档副本(以下简称“软件”)的人免费使用软件的权利,不受任何限制,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售软件副本的权利,并允许软件的接收者为此目的进行操作,但须遵守以下条件

上述版权声明和本许可声明应包含在软件的副本或主要部分中。

本软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于对适销性、适用于特定用途和不受侵犯的保证。在任何情况下,作者或版权所有者均不对任何索赔、损害或其他责任负责,无论该责任是基于合同、侵权或其他方式,也不论该责任是否因软件或其使用或其他操作而产生。