Вікі-код для JsonRpcClientSdk
Показати останніх авторів
| author | version | line-number | content |
|---|---|---|---|
| 1 | {{box cssClass="floatinginfobox"}} | ||
| 2 | {{html}} | ||
| 3 | <div style='text-align: center;margin:0 0 10px 0;'><a class="button-link packagist" data-cke-saved-href="https://packagist.org/packages/ufo-tech/json-rpc-client-sdk" href="https://packagist.org/packages/ufo-tech/json-rpc-client-sdk"><img data-cke-saved-src="https://packagist.org/img/logo-small.png" src="https://packagist.org/img/logo-small.png">Packagist</a> <a class="button-link" data-cke-saved-href="https://github.com/UFO-Tech/json-rpc-client-sdk" href="https://github.com/UFO-Tech/json-rpc-client-sdk"><img data-cke-saved-src="https://camo.githubusercontent.com/dfe7e80288901f8d5e8de7562d6f94491e2a7f8042316fd544fe3b6364b63783/68747470733a2f2f69636f6e2d6c6962726172792e636f6d2f696d616765732f6769746875622d69636f6e2d77686974652f6769746875622d69636f6e2d77686974652d362e6a7067" src="https://camo.githubusercontent.com/dfe7e80288901f8d5e8de7562d6f94491e2a7f8042316fd544fe3b6364b63783/68747470733a2f2f69636f6e2d6c6962726172792e636f6d2f696d616765732f6769746875622d69636f6e2d77686974652f6769746875622d69636f6e2d77686974652d362e6a7067">GitHub</a></div> | ||
| 4 | {{/html}} | ||
| 5 | |||
| 6 | |||
| 7 | |**Актуальна версія** | [[image:https://img.shields.io/github/v/tag/ufo-tech/json-rpc-client-sdk?color=blue&label=&logo=alienware&logoColor=white&labelColor=7b8185]] | ||
| 8 | | **Категорія** | Api | ||
| 9 | | **Тип** | Library | ||
| 10 | | **Залежності** |[[image:https://img.shields.io/packagist/dependency-v/ufo-tech/json-rpc-client-sdk/php?logo=PHP&logoColor=white]] | ||
| 11 | [[image:https://img.shields.io/packagist/dependency-v/ufo-tech/json-rpc-client-sdk/symfony/maker-bundle?label=SymfonyMaker&logo=Symfony&logoColor=white]] | ||
| 12 | [[image:https://img.shields.io/packagist/dependency-v/ufo-tech/json-rpc-client-sdk/symfony/http-client?label=SymfonyHttp&logo=Symfony&logoColor=white]] | ||
| 13 | [[image:https://img.shields.io/packagist/dependency-v/ufo-tech/json-rpc-client-sdk/symfony/cache?label=SymfonyCache&logo=Symfony&logoColor=white]] | ||
| 14 | [[image:https://img.shields.io/packagist/dependency-v/ufo-tech/json-rpc-client-sdk/ufo-tech/rpc-objects?label=UfoRpcObject&logo=alienware&logoColor=white]] | ||
| 15 | | **Розмір** | [[image:https://img.shields.io/github/repo-size/ufo-tech/json-rpc-client-sdk?label=Size%20of%20the%20repository]] | ||
| 16 | | **Ліцензія** | [[image:https://img.shields.io/badge/license-MIT-green?labelColor=7b8185]] | ||
| 17 | {{/box}} | ||
| 18 | |||
| 19 | = json-rpc-client-sdk = | ||
| 20 | |||
| 21 | Проста бібліотека, що генерує SDK для звертання до сторонніх сервісів, що працюють по протоколу Json-RPC API з бібліотекою [[JsonRpcBundle>>doc:docs.JsonRpcBundle.WebHome]]. Генератор зчитує Json документацію API та створює зручні класи-сервіси і типізовані DTO класи відповідей. | ||
| 22 | |||
| 23 | == Генерація SDK == | ||
| 24 | |||
| 25 | Запустіть інтерактивну CLI команду {{code language="none"}}php bin/make.php{{/code}}, введіть назву сервісу та url, по якому доступна документація. | ||
| 26 | |||
| 27 | {{code language="bash"}} | ||
| 28 | php bin/make.php | ||
| 29 | > Enter API vendor name: some_vendor | ||
| 30 | > Enter the API url: http://some.url/api | ||
| 31 | {{/code}} | ||
| 32 | |||
| 33 | (% class="box warningmessage" %) | ||
| 34 | ((( | ||
| 35 | ВАЖЛИВО: генератор використовує кешування документації на 30 хвилин. | ||
| 36 | ))) | ||
| 37 | |||
| 38 | == Приклад використання SDK == | ||
| 39 | |||
| 40 | Цей приклад демонструє роботу зі згенерованим SDK. | ||
| 41 | |||
| 42 | (% class="box warningmessage" %) | ||
| 43 | ((( | ||
| 44 | ВАЖЛИВО: Ви можете мати інші класи процедур. Приклад показує лише концепцію взаємодії. | ||
| 45 | ))) | ||
| 46 | |||
| 47 | {{code language="php" layout="LINENUMBERS"}} | ||
| 48 | <?php | ||
| 49 | |||
| 50 | use Symfony\Component\HttpClient\CurlHttpClient; | ||
| 51 | use Ufo\RpcSdk\Client\Shortener\UserProcedure; | ||
| 52 | use Ufo\RpcSdk\Client\Shortener\PingProcedure; | ||
| 53 | use Ufo\RpcSdk\Procedures\AbstractProcedure; | ||
| 54 | |||
| 55 | require_once __DIR__ . '/../vendor/autoload.php'; | ||
| 56 | |||
| 57 | $headers = [ | ||
| 58 | 'Ufo-RPC-Token'=>'some_security_token' | ||
| 59 | ]; | ||
| 60 | |||
| 61 | try { | ||
| 62 | $pingService = new PingProcedure( | ||
| 63 | headers: $headers | ||
| 64 | ); | ||
| 65 | echo $pingService->ping(); // print "PONG" | ||
| 66 | |||
| 67 | // ... | ||
| 68 | |||
| 69 | $userService = new UserProcedure( | ||
| 70 | headers: $headers, | ||
| 71 | requestId: uniqid(), | ||
| 72 | rpcVersion: AbstractProcedure::DEFAULT_RPC_VERSION, | ||
| 73 | httpClient: new CurlHttpClient(), | ||
| 74 | httpRequestOptions: [] | ||
| 75 | ); | ||
| 76 | $user = $userService->createUser( | ||
| 77 | login: 'some_login', | ||
| 78 | password: 'some_password' | ||
| 79 | ); | ||
| 80 | var_dump($user); | ||
| 81 | // array(3) { | ||
| 82 | // ["id"]=> int(279232969) | ||
| 83 | // ["login"]=> string(3) "some_login" | ||
| 84 | // ["status"]=> int(0) | ||
| 85 | |||
| 86 | } catch (\Throwable $e) { | ||
| 87 | echo $e->getMessage() . PHP_EOL; | ||
| 88 | } | ||
| 89 | // ... | ||
| 90 | {{/code}} | ||
| 91 | |||
| 92 | == Налагодження запитів та відповідей == | ||
| 93 | |||
| 94 | {{code language="php" layout="LINENUMBERS"}} | ||
| 95 | <?php | ||
| 96 | |||
| 97 | // ... | ||
| 98 | use Ufo\RpcSdk\Procedures\RequestResponseStack; | ||
| 99 | // ... | ||
| 100 | |||
| 101 | $fullStack = RequestResponseStack::getAll(); // отримати всі попередні запити та відповіді | ||
| 102 | $lastStack = RequestResponseStack::getLastStack(); // отримати останні запити та відповіді | ||
| 103 | |||
| 104 | $lastRequest = RequestResponseStack::getLastRequest(); // отримати останній запит | ||
| 105 | $lastResponse = RequestResponseStack::getLastResponse(); // отримати останню відповідь | ||
| 106 | // ... | ||
| 107 | {{/code}} | ||
| 108 | |||
| 109 | == Власні налаштування генератору == | ||
| 110 | |||
| 111 | Ви можете генерувати SDK і у власний спосіб. | ||
| 112 | |||
| 113 | {{code language="php" layout="LINENUMBERS"}} | ||
| 114 | <?php | ||
| 115 | use Ufo\RpcSdk\Maker\Maker; | ||
| 116 | |||
| 117 | require_once __DIR__ . '/../vendor/autoload.php'; | ||
| 118 | |||
| 119 | $maker = new Maker( | ||
| 120 | apiUrl: $apiUrl, | ||
| 121 | apiVendorAlias: $vendorName, | ||
| 122 | namespace: Maker::DEFAULT_NAMESPACE, // 'Ufo\RpcSdk\Client' | ||
| 123 | projectRootDir: getcwd(), // project_dir | ||
| 124 | cacheLifeTimeSecond: Maker::DEFAULT_CACHE_LIFETIME // 3600 | ||
| 125 | ); | ||
| 126 | |||
| 127 | $maker->make(); | ||
| 128 | {{/code}} | ||
| 129 | |||
| 130 | (% class="wikigeneratedid" %) | ||
| 131 | Також ви можете передати callback в метод make для можливої додаткової обробки генерації. | ||
| 132 | |||
| 133 | {{code language="php" layout="LINENUMBERS"}} | ||
| 134 | <?php | ||
| 135 | |||
| 136 | //... | ||
| 137 | |||
| 138 | $maker->make(function (ClassDefinition $classDefinition) { | ||
| 139 | // additional traversal of generated classes after generation | ||
| 140 | }); | ||
| 141 | {{/code}} | ||
| 142 | |||
| 143 | == Переваги == | ||
| 144 | |||
| 145 | {{info}} | ||
| 146 | Цей SDK забезпечує простоту у використанні та ефективну взаємодію з json-RPC серверами. | ||
| 147 | {{/info}} |