ethical-jobs/sdk-php

EthicalJobs API 客户端和 SDK


README

为了重新发布为单个包,所有当前 EJ 包将在 2021 年中旬下线。

兼容性

  • v8.* - Laravel 8 或更高版本,PHP >8.x <9.x
  • v4.* - Laravel 8 或更高版本,PHP 7.3
  • v3.* - Laravel 7 或更低版本(可能是 5.6 到 5.9)

安装

composer require ethical-jobs/@ethical-jobs/sdk

对于 Laravel < 5.5.x,在您的 config/app.php 文件中包含服务提供者和外观 EthicalJobs\SDK\Laravel\ServiceProvider::class'EthicalJobs' => EthicalJobs\SDK\Laravel\ApiFacade::class,。对于 Laravel >= 5.5.x,该包将自动包含服务提供者和外观。

身份验证

您需要设置 4 个环境变量以启用身份验证

{
    "AUTH_CLIENT_ID": "The client id of the oauth grant",
    "AUTH_CLIENT_SECRET": "The client secret of the oauth grant",
    "AUTH_SERVICE_USERNAME": "Username or email of the user",
    "AUTH_SERVICE_PASSWORD": "Base64 encoded password of the user",
}

当使用需要身份验证的端点时,您首先需要调用 EthicalJobs::authenticate()

发送请求

有许多方法可以访问 API 资源,以下是一些示例

// GET /jobs
EthicalJobs::get('/jobs', ['status' => 'APPROVED']);

// GET /jobs/drafts
EthicalJobs::get('/jobs/drafts', ['status' => 'APPROVED']);

// GET /jobs/214
EthicalJobs::get('/jobs/214');

// GET /jobs { status: APPROVED, expired: false }
EthicalJobs::resource('jobs')->approved();

// GET /jobs { expired: true }
EthicalJobs::resource('jobs')->expired();

// POST /jobs { ... }
EthicalJobs::post('/jobs', ['title' => 'React Developer', 'description' => 'We are looking for...']);

响应

响应作为 EthicalJobs\SDK\Collection 返回,该集合扩展了 Illuminate\Support\Collection。如果没有结果,则返回空集合。此类具有扩展方法以选择嵌套响应项:$collection->entities('jobs');。此外,还有

测试和模拟

为了轻松模拟 SDK 响应,在 ApiClientEthicalJobs 外观上存在一个响应堆栈辅助函数。这返回一个完全模拟的 ApiClient 实例,您可以将它注入到 Laravel IOC 容器中或直接使用。

为了模拟实际的 SDK 响应,还有在 EthicalJobs\SDK\Testing\ResponseFactory 中可用的最新的模拟 JSON 响应。

// Mocking a set of api calls and their responses
$api = ApiClient::mock([
    ResponseFactory::response(204, ResponseFactory::jobs()),
    ResponseFactory::response(201, ResponseFactory::job()),
    ResponseFactory::response(200, ResponseFactory::user()),
]);

// Subsequent calls will return the above responses in order
$jobs = $api->get('/jobs');
$job = $api->get('/job/17263');
$user = $api->get('/user/2827');