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

Версія 6.1 додана 2024/05/27 10:35 автором 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 (% 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}}