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

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