sancho2804/rest_client

PHP REST API服务客户端

1.0.5 2020-10-21 10:16 UTC

This package is auto-updated.

Last update: 2024-09-21 18:21:15 UTC


README

许多服务都配备了REST API,这对开发者来说非常方便。为了与API交互,需要开发特定任务的模块。我建议使用"REST API服务卡片"来简化任务。这些卡片以JSON格式呈现。但类也可以直接用于调用服务方法。

开始吧 ,我要开枪了

通过composer安装

composer require sancho2804/rest_client

使用namespace自动加载创建对象类

include_once 'vendor/autoload.php';
use sancho2804\rest_client\main;
$yandex_disk=new main('https://cloud-api.yandex.net:443/v1/','OAuth',$token);

第一个参数是所需服务的REST API链接。将在此链接上添加后续指定的路径。如果服务不需要认证,则可以省略第二个和第三个参数。第二个参数通常是一个字符串或Bearer。

可用方法

rest_client::set_service($service_name)

根据服务名称加载服务地图。不需要扩展名。地图存储在src/maps/< service_name >.json中

参数

  1. 服务名称/地图文件名称

返回值:void

$yandex_disk->set_service('yandex_disk');

rest_client::exec($alias, $post_fields, [$arg1, ....])

调用地图中定义的服务方法。

参数

  1. $alias - 调用服务方法的别名
  2. $post_fields - 默认null。如果传递数组,则将其传递到POST头部
  3. 执行请求到服务方法所需的所有必要参数

返回值:默认 - 以数组形式返回响应结果。如果$rest_client::$result_is_json设置为false,则返回原始结果。

$yandex_disk->exec('dir_info',null,'/');

rest_client::${method_name}($post_fields, [$arg1, ....])

以类方法的形式调用服务方法。

参数

  1. $post_fields - 默认null。如果传递数组,则将其传递到POST头部
  2. 执行请求到服务方法所需的所有必要参数

返回值:默认 - 以数组形式返回响应结果。如果rest_client::$result_is_json设置为false,则返回原始结果。

$result=$yandex_disk->dir_info(null, '/');
//Идентично $yandex_disk->exec('dir_info',null,'/');

rest_client::get($path, $post_fields)

通过HTTP GET方法调用服务方法。

参数

  1. $path - 到方法的服务相对路径
  2. $post_fields - 默认null。如果传递数组,则将其传递到POST头部

返回值:默认 - 以数组形式返回响应结果。如果rest_client::$result_is_json设置为false,则返回原始结果。

$yandex_disk->get('disk/resources?path=/');

rest_client::save($path, $post_fields)

通过HTTP POST方法调用服务方法。

参数: 与get方法相同

返回值:与get方法相同

$yandex_disk->save('disk/resources/copy?from=/file1.php&path=/file2.php');

rest_client::delete($path, $post_fields)

通过HTTP DELETE方法调用服务方法。

参数: 与get方法相同

返回值:与get方法相同

$yandex_disk->delete('disk/resources?path=/file2.php');

rest_client::update($path, $post_fields)

通过HTTP PATCH方法调用服务方法。

参数: 与get方法相同

返回值:与get方法相同

$yandex_disk->update('disk/resources?path=/file2.php&body=...');

rest_client::create($path, $post_fields)

通过HTTP PUT方法调用服务方法。

参数: 与get方法相同

返回值:与get方法相同

$yandex_disk->create('disk/resources/publish?path=/file2.php');

rest_client::options($path, $post_fields)

通过HTTP OPTIONS方法调用服务方法。

参数: 与get方法相同

返回值:与get方法相同

//Пока не встречал его в работе, но он как суслик

JSON地图格式

{
    "dir_info":{
        "method":"GET",
        "uri":"disk/resources?path={::}&offset={::}&limit={::}&sort={::}&fields={::}",
        "require":[0]
    },
    ...
}
  • dir_info - 调用服务的别名
  • method - HTTP方法。GET,POST,DELETE,PATCH,PUT,OPTIONS
  • uri - REST API方法的路径。{::}构造将被替换为rest_client::exec方法中的参数,顺序与传递的顺序相同
  • require - 指定必须传递的{::}构造的编号。 计数从0开始