tuimz/pest

此包已废弃,不再维护。作者建议使用guzzle/guzzle包。
此包最新版本(dev-master)的许可信息不可用。

PHP的适当REST客户端。

维护者

详细信息

github.com/tuimz/pest

源代码

dev-master 2013-12-04 06:30 UTC

This package is auto-updated.

Last update: 2022-02-01 12:24:49 UTC


README

Pest 是一个 PHP 客户端库,用于RESTful 网络服务。

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

请注意,这是 Pest 的命名空间版本,命名空间为 'Pest'

使用 Composer 入门

将以下内容添加到您的项目的 composer.json 中

"require": {
    "tuimz/pest": "dev-master",
}

以下示例使用 Pest 的命名空间版本

<?php
require '/vendor/autoload.php';

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

除了这个,以下所有示例都适用。

基本示例

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

<?php
require 'Pest.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 是 Pest 的以 XML 为中心的版本,特别针对返回 XML 数据的 REST 服务。PestXML 不会像通常那样返回原始响应体作为字符串,而是会尝试将服务的响应解析为 SimpleXML 对象。

<?php
require 'PestXML.php';

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

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

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

?>

同样,PestJSON 是 Pest 的以 JSON 为中心的版本。

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

待办事项

  • 身份验证
  • 跟随重定向

许可

版权所有 © 2011 多伦多大学

任何人可以免费获得本软件及其相关文档副本(以下简称“软件”),无需限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件的副本,并允许获得本软件的人进行此类操作,但必须遵守以下条件

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

软件按“现状”提供,不提供任何形式的保证,无论是明示的、暗示的,还是包括但不限于适销性、适用于特定目的和非侵权的保证。在任何情况下,作者或版权所有者不对任何索赔、损害或其他责任负责,无论是因为合同、侵权或其他行为,无论该索赔、损害或其他责任是从、由于或与软件的使用或其他方式有关。