indragunawan/rest-service

提供了一个Guzzle命令库的实现。

v0.1.0 2016-12-22 04:39 UTC

This package is auto-updated.

Last update: 2024-09-20 07:42:39 UTC


README

GitHub license Travis Scrutinizer Scrutinizer Coverage SensioLabsInsight

提供了一个使用服务规范描述Web服务的Guzzle命令库的实现。

安装

使用composer安装库

$ composer require indragunawan/rest-service

Composer会将库安装到项目的vendor/indragunawan/rest-service目录。

用法

<?php

// httpbin-v1.php

return [
    'name' => 'httpbin API',
    'endpoint' => '{endpoint}',
    'defaults' => [
        'endpoint' => [
            'rule' => 'required | url', // see: http://www.sirius.ro/php/sirius/validation/validation_rules.html
            'defaultValue' => 'http://httpbin.org',
        ],
    ],
    'operations' => [
        'postTest' => [
            'httpMethod' => 'POST', // header, uri, query, body
            'requestUri' => '/post',
            'request' => [
                'type' => 'map', // map, list
                'members' => [
                    'Name' => [
                        'locationName' => 'name',
                        'type' => 'string', // string, integer, float, number, boolean, datetime
                        'rule' => 'required',
                    ],
                    'CreatedAt' => [
                        'type' => 'datetime',
                        'defaultValue' => 'now',
                        'format' => 'd M y',
                    ],
                ],
            ],
            'response' => [
                'members' => [
                    'url' => [
                        'type' => 'string',
                        'format' => 'format_%s',
                    ]
                ]
            ],
        ],
    ],
];
use IndraGunawan\RestService\ServiceClient;

    $config = [
        'httpClient' => [
            // use by GuzzleClient
        ],
        'defaults' => [
            // default value for services specification
        ],
    ];
    $cacheDir = __DIR__.'/../cache'; // optional, default: null
    $debug = false; // optional, default: false

    $service = new ServiceClient(__DIR__.'/httpbin-v1.php', $config, $cacheDir, $debug);
    $result = $service->postTest([
        'Name' => 'My Name',
    ]);

    echo $result['url']; // format_http://httpbin.org/post
    // var_dump($result->toArray());

待办事项

  • 添加更多测试。
  • 添加更多文档。
  • 解析响应到模型