前言
此套件的目的是封裝 Guzzle HTTP 套件,使客戶端在不需要知道 API 路徑的情況下,就能夠透過套件所提供的方法獲取服務端的資源。
核心
在 Client
類別中,定義了 fetchProject
方法,此方法可以向服務端獲取專案的所有翻譯鍵以及翻譯值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
| declare(strict_types=1);
namespace MemoChou1993\Lexicon;
use GuzzleHttp\Client as GuzzleClient; use GuzzleHttp\Exception\GuzzleException; use Psr\Http\Message\ResponseInterface;
class Client {
private GuzzleClient $client;
private array $config;
public function __construct(array $config = []) { $this->config = array_merge( [ 'host' => getenv('LEXICON_HOST') ?: null, 'api_key' => getenv('LEXICON_API_KEY') ?: null, ], $config, ); }
protected function host(): string { return $this->config['host']; }
protected function apiKey(): string { return $this->config['api_key']; }
protected function headers(): array { return [ 'Authorization' => sprintf('Bearer %s', $this->apiKey()), ]; }
protected function options(): array { return [ 'headers' => $this->headers(), ]; }
protected function getClient(): GuzzleClient { return $this->client ?? $this->createClient(); }
protected function createClient(): GuzzleClient { $this->client = new GuzzleClient([ 'base_uri' => $this->host(), ]);
return $this->client; }
public function fetchProject(): ResponseInterface { try { return $this->getClient()->get('/api/project', $this->options()); } catch (GuzzleException $e) { throw $e; } } }
|
使用
安裝套件。
1
| composer require memochou1993/lexicon-api-php-client
|
複製 .env.example
範本到 .env
檔:
1 2
| LEXICON_HOST= LEXICON_API_KEY=
|
LEXICON_HOST
參數是服務端的網址。
LEXICON_API_KEY
參數是客戶端向服務端存取資源的 API 金鑰。
初始化 Client
類別,並使用 fetchProject
方法獲取資源。
1 2 3
| $client = new \MemoChou1993\Lexicon\Client();
$project = $client->fetchProject();
|
程式碼