mikecbrant/php-rest-client

PSR-4 PHP 包模板。

dev-master 2017-06-08 00:11 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:40:49 UTC


README

Build Status Code Climate Test Coverage

php-rest-client

此库提供了基于 PHP 的 cURL 扩展实现基本 REST 客户端的类。提供了两个客户端类

  • RestClient - 执行 RESTful 服务调用的类。
  • RestMultiClient - 扩展 RestClient 以提供 curl_multi 功能的类,允许并行执行多个 RESTful 调用。

此外,此库还提供了封装 cURL 响应的类,以面向对象的方式接口

这些类支持

  • HTTP 动作 - GET, POST, PUT, DELETE, 和 HEAD
  • 基本认证
  • SSL,能够切换 SSL 证书验证以帮助开发/测试环境

要求

  • PHP 5.6+
  • PHP cURL 扩展
  • PHPUnit 5.7+(仅用于单元测试)

此库针对 PHP 7.1 开发,并通过 Travis CI 对以下版本进行测试

  • PHP 5.6.*
  • PHP 7.0.*
  • PHP 7.1.*
  • PHP Nightly 构建

完整库文档

Travis CI 构建状态

Code Climate 代码覆盖率和健康信息

Packagist 页面

使用示例

<?php

use MikeBrant\RestClientLib;

/**
 * Single request using RestClient
 */
$restClient = new RestClient();
$restClient->setRemoteHost('foo.bar.com')
           ->setUriBase('/some_service/')
           ->setUseSsl(true)
           ->setUseSslTestMode(false)
           ->setBasicAuthCredentials('username', 'password')
           ->setHeaders(array('Accept' => 'application/json'));
// make requests against service
$response = $restClient->get('resource');
$response = $restClient->post('resource', $data);
$response = $restClient->put('resource', $data);
$response = $restClient->delete('resource');
$response = $restClient->head('resource');

/**
 * Multiple parallel requests using RestMultiClient
 */
$restMultiClient = new RestMultiClient();
$restMultiClient->setRemoteHost('foo.bar.com')
                ->setUriBase('/some_service/')
                ->setUseSsl(true)
                ->setUseSslTestMode(false)
                ->setBasicAuthCredentials('username', 'password')
                ->setHeaders(array('Accept' => 'application/json'));
// make requests against service
$responses = $restMultiClient->get(['resource1', 'resource2', ...]);
$responses = $restMultiClient->post(['resource1', 'resource2', ...], [$data1, $data2, ...]);
$responses = $restMultiClient->put(['resource1', 'resource2', ...], [$data1, $data2, ...]);
$responses = $restMultiClient->delete(['resource1', 'resource2', ...]);
$responses = $restMultiClient->head(['resource1', 'resource2', ...]);