bagart/laravel-api-provider

测试工作:Laravel 位置 API 的响应

dev-master 2017-12-05 02:25 UTC

This package is not auto-updated.

Last update: 2024-09-21 16:44:46 UTC


README

需要实现 Symfony3 或 Laravel 扩展,以便获取存储在预定义格式中的 JSON 编码位置数据。

验收标准

  1. 客户端应定义为扩展配置中的一个服务类;
  2. 客户端应利用 CURL 作为传输层(可以依赖任何第三方 **扩展,但应作为一个单独的类/包实现);
  3. 在 CURL 错误、格式不正确的 JSON 响应和错误 JSON 响应上应抛出适当的异常;
  4. 结果数据应以适当的数组(或其他集合)形式获取

JSON 响应格式

{
    "data": {
        "locations": [
            {
                "name": "Eiffel Tower",
                "coordinates": {
                    "lat": 21.12,
                    "long": 19.56
                }
            },
            ...
        ]
    },
    "success": true
}

JSON 错误响应格式

{
    "data": {
        "message": <string error message>,
        "code": <string error code>
    },
    "success": false
}

安装

composer require bagart/laravel-api-provider '@dev'

使用

    /**
     * @var \Bagart\LaravelApiProvider\Providers\DataProvider $data_provider
     */
    $data_provider = app(\Bagart\LaravelApiProvider\Providers\DataProvider::class);

    dump($data_provider->request('http://dockerhost/example.json', 'locations'));
    dump($data_provider->request('http://dockerhost/example2.json', 'locations'));
    try {
        $data_provider->request('http://dockerhost/error.json', 'locations');
    } catch (\Bagart\LaravelApiProvider\Exceptions\LaravelApiProviderException $e) {
        dump("LaravelApiProviderException: {$e->getMessage()}");
    }

功能

使用

  • Guzzle(作为选项的 curl 内部)

待办事项

  • 请求空逻辑和 API 空格式
  • PHPUnit 测试

技术细节

合同

  • Bagart\LaravelApiProvider\ApiClientContract
  • Bagart\LaravelApiProvider\DataProviderContract
  • Bagart\LaravelApiProvider\DataContainerContract

异常

所有预期的异常都是 Bagart\LaravelApiProvider\Exceptions\LaravelApiProviderException 实例