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

Остання зміна 2024/05/27 10:35 автором Ashterix

Сховати останніх авторів
Ashterix 2.1 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
Ashterix 4.1 7 |**Актуальна версія** | [[image:https://img.shields.io/github/v/tag/ufo-tech/json-rpc-client-sdk?color=blue&label=&logo=alienware&logoColor=white&labelColor=7b8185]]
Ashterix 2.1 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]]
Ashterix 3.1 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]]
Ashterix 2.1 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}}
Ashterix 4.2 18
19 Проста бібліотека, що генерує SDK для звертання до сторонніх сервісів, що працюють по протоколу Json-RPC API з бібліотекою [[JsonRpcBundle>>doc:docs.JsonRpcBundle.WebHome]]. Генератор зчитує Json документацію API та створює зручні класи-сервіси і типізовані DTO класи відповідей.
20
21 == Генерація SDK ==
22
23 Запустіть інтерактивну CLI команду {{code language="none"}}php bin/make.php{{/code}}, введіть назву сервісу та url, по якому доступна документація.
24
25 {{code language="bash"}}
26 php bin/make.php
27 > Enter API vendor name: some_vendor
28 > Enter the API url: http://some.url/api
29 {{/code}}
30
Ashterix 6.1 31 (% class="box warningmessage" %)
32 (((
33 ВАЖЛИВО: генератор використовує кешування документації на 30 хвилин.
34 )))
35
Ashterix 4.2 36 == Приклад використання SDK ==
37
Ashterix 5.1 38 Цей приклад демонструє роботу зі згенерованим SDK.
Ashterix 4.2 39
Ashterix 5.1 40 (% class="box warningmessage" %)
41 (((
42 ВАЖЛИВО: Ви можете мати інші класи процедур. Приклад показує лише концепцію взаємодії.
43 )))
44
Ashterix 4.2 45 {{code language="php" layout="LINENUMBERS"}}
46 <?php
47
48 use Symfony\Component\HttpClient\CurlHttpClient;
49 use Ufo\RpcSdk\Client\Shortener\UserProcedure;
50 use Ufo\RpcSdk\Client\Shortener\PingProcedure;
51 use Ufo\RpcSdk\Procedures\AbstractProcedure;
52
53 require_once __DIR__ . '/../vendor/autoload.php';
54
55 $headers = [
56 'Ufo-RPC-Token'=>'some_security_token'
57 ];
58
59 try {
60 $pingService = new PingProcedure(
61 headers: $headers
62 );
63 echo $pingService->ping(); // print "PONG"
64
65 // ...
66
67 $userService = new UserProcedure(
68 headers: $headers,
69 requestId: uniqid(),
70 rpcVersion: AbstractProcedure::DEFAULT_RPC_VERSION,
71 httpClient: new CurlHttpClient(),
72 httpRequestOptions: []
73 );
74 $user = $userService->createUser(
75 login: 'some_login',
76 password: 'some_password'
77 );
78 var_dump($user);
79 // array(3) {
80 // ["id"]=> int(279232969)
81 // ["login"]=> string(3) "some_login"
82 // ["status"]=> int(0)
83
84 } catch (\Throwable $e) {
85 echo $e->getMessage() . PHP_EOL;
86 }
87 // ...
88 {{/code}}
89
90 == Налагодження запитів та відповідей ==
91
92 {{code language="php" layout="LINENUMBERS"}}
93 <?php
94
95 // ...
96 use Ufo\RpcSdk\Procedures\RequestResponseStack;
97 // ...
98
99 $fullStack = RequestResponseStack::getAll(); // отримати всі попередні запити та відповіді
100 $lastStack = RequestResponseStack::getLastStack(); // отримати останні запити та відповіді
101
102 $lastRequest = RequestResponseStack::getLastRequest(); // отримати останній запит
103 $lastResponse = RequestResponseStack::getLastResponse(); // отримати останню відповідь
104 // ...
Ashterix 5.1 105 {{/code}}
Ashterix 4.2 106
Ashterix 5.1 107 == Власні налаштування генератору ==
108
Ashterix 6.1 109 Ви можете генерувати SDK і у власний спосіб.
Ashterix 5.1 110
111 {{code language="php" layout="LINENUMBERS"}}
112 <?php
113 use Ufo\RpcSdk\Maker\Maker;
114
115 require_once __DIR__ . '/../vendor/autoload.php';
116
117 $maker = new Maker(
118 apiUrl: $apiUrl,
119 apiVendorAlias: $vendorName,
120 namespace: Maker::DEFAULT_NAMESPACE, // 'Ufo\RpcSdk\Client'
121 projectRootDir: getcwd(), // project_dir
122 cacheLifeTimeSecond: Maker::DEFAULT_CACHE_LIFETIME // 3600
123 );
Ashterix 6.1 124
125 $maker->make();
Ashterix 4.2 126 {{/code}}
127
Ashterix 6.1 128 (% class="wikigeneratedid" %)
129 Також ви можете передати callback в метод make для можливої додаткової обробки генерації.
130
131 {{code language="php" layout="LINENUMBERS"}}
132 <?php
133
134 //...
135
136 $maker->make(function (ClassDefinition $classDefinition) {
137 // additional traversal of generated classes after generation
138 });
139 {{/code}}
140
Ashterix 4.2 141 == Переваги ==
142
143 {{info}}
144 Цей SDK забезпечує простоту у використанні та ефективну взаємодію з json-RPC серверами.
145 {{/info}}