Вікі-код для JsonRpcClientSdk

Версія 5.1 додана 2024/05/27 10:19 автором Ashterix

Показати останніх авторів
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 == Приклад використання SDK ==
34
35 Цей приклад демонструє роботу зі згенерованим SDK.
36
37 (% class="box warningmessage" %)
38 (((
39 ВАЖЛИВО: Ви можете мати інші класи процедур. Приклад показує лише концепцію взаємодії.
40 )))
41
42 {{code language="php" layout="LINENUMBERS"}}
43 <?php
44
45 use Symfony\Component\HttpClient\CurlHttpClient;
46 use Ufo\RpcSdk\Client\Shortener\UserProcedure;
47 use Ufo\RpcSdk\Client\Shortener\PingProcedure;
48 use Ufo\RpcSdk\Procedures\AbstractProcedure;
49
50 require_once __DIR__ . '/../vendor/autoload.php';
51
52 $headers = [
53 'Ufo-RPC-Token'=>'some_security_token'
54 ];
55
56 try {
57 $pingService = new PingProcedure(
58 headers: $headers
59 );
60 echo $pingService->ping(); // print "PONG"
61
62 // ...
63
64 $userService = new UserProcedure(
65 headers: $headers,
66 requestId: uniqid(),
67 rpcVersion: AbstractProcedure::DEFAULT_RPC_VERSION,
68 httpClient: new CurlHttpClient(),
69 httpRequestOptions: []
70 );
71 $user = $userService->createUser(
72 login: 'some_login',
73 password: 'some_password'
74 );
75 var_dump($user);
76 // array(3) {
77 // ["id"]=> int(279232969)
78 // ["login"]=> string(3) "some_login"
79 // ["status"]=> int(0)
80
81 } catch (\Throwable $e) {
82 echo $e->getMessage() . PHP_EOL;
83 }
84 // ...
85 {{/code}}
86
87 == Налагодження запитів та відповідей ==
88
89 {{code language="php" layout="LINENUMBERS"}}
90 <?php
91
92 // ...
93 use Ufo\RpcSdk\Procedures\RequestResponseStack;
94 // ...
95
96 $fullStack = RequestResponseStack::getAll(); // отримати всі попередні запити та відповіді
97 $lastStack = RequestResponseStack::getLastStack(); // отримати останні запити та відповіді
98
99 $lastRequest = RequestResponseStack::getLastRequest(); // отримати останній запит
100 $lastResponse = RequestResponseStack::getLastResponse(); // отримати останню відповідь
101 // ...
102 {{/code}}
103
104 == Власні налаштування генератору ==
105
106 Ви можете генерувати SDK і у власний спосіб
107
108 {{code language="php" layout="LINENUMBERS"}}
109 <?php
110 use Ufo\RpcSdk\Maker\Maker;
111
112 require_once __DIR__ . '/../vendor/autoload.php';
113
114 $maker = new Maker(
115 apiUrl: $apiUrl,
116 apiVendorAlias: $vendorName,
117 namespace: Maker::DEFAULT_NAMESPACE, // 'Ufo\RpcSdk\Client'
118 projectRootDir: getcwd(), // project_dir
119 cacheLifeTimeSecond: Maker::DEFAULT_CACHE_LIFETIME // 3600
120 );
121 {{/code}}
122
123 == Переваги ==
124
125 {{info}}
126 Цей SDK забезпечує простоту у використанні та ефективну взаємодію з json-RPC серверами.
127 {{/info}}