docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/sdk/README.md
new file +45
−0
SDK для JSON-RPC API
SDK UFO-Tech генерує типізований клієнт для будь-якого JSON-RPC сервера з його документації OpenRPC: класи процедур з методами, DTO і enum. Замість ручного складання JSON ви викликаєте звичайні PHP-методи й отримуєте об'єкти.
Найкраще SDK працює з серверами на JsonRpcBundle: GET /rpc уже віддає документацію, з якої будується клієнт, а спеціальні параметри $rpc (callback, timeout, rayId, обхід кешу) і асинхронні транспорти підтримуються з обох боків.
Як це працює
сервер (JsonRpcBundle) ваш застосунок
────────────────────── ─────────────────────────────────────────
GET /rpc → OpenRPC ──── генерація ───► App\Sdk\Orders\UserSDK, DTO\UserDto, Enums\...
POST /rpc ◄─── виклик ─────── $userSdk->get(5) → UserDto
черга (AMQP) ◄─── async ──────── $asyncUserSdk->get(5) → true
- Генерація. SDK читає документ OpenRPC (за URL або з файлу) і створює класи процедур, DTO, enum та файл з адресами серверів
sdk_config.yaml.dist. - Виклик. Метод згенерованого класу валідує параметри, надсилає JSON-RPC запит і перетворює результат на DTO, enum чи колекції.
- Помилки сервера перетворюються на винятки з кодами JSON-RPC.
Пакети
| Пакет | Що це | Коли потрібен |
|---|---|---|
JSON-RPC Client SDK (ufo-tech/json-rpc-client-sdk) |
Бібліотека: генератор і базові класи процедур | Будь-який PHP-проєкт; основа для SDK Bundle |
JSON-RPC SDK Bundle (ufo-tech/json-rpc-sdk-bundle) |
Інтеграція в Symfony: конфіг постачальників API, консольні команди, автовайринг згенерованих класів і токенів | Symfony-застосунок, що викликає один чи кілька JSON-RPC API |
ufo-tech/component-transport-contracts, ufo-tech/component-transport-amqp |
Контракти й AMQP-реалізація асинхронних викликів | Асинхронні виклики через черги |
RPC TS SDK (@ufotech/rpc-ts-sdk) |
TypeScript-інтерфейси зі схем OpenRPC | Фронтенд і Node.js-клієнти |
Сумісність версій
Станом на 2026-10-19:
| SDK Bundle | Client SDK | PHP | Symfony |
|---|---|---|---|
| 4.0 | ^5.0 | >= 8.4 | ^7.3 | ^8.0 |
| 3.2 | ^4.3 | >= 8.3 | ^7.3 |
| 3.1 | ^4.1 | >= 8.3 | ^7.3 |
Client SDK 5.x сам по собі потребує PHP >= 8.3 і Symfony ^7.2 | ^8.0. З сервером зв'язок іде через документ OpenRPC, тож жорсткої прив'язки до версії JsonRpcBundle немає; асинхронні виклики потребують на сервері транспорт з назвою, що починається з rpc_async, і docs.async_dsn_info: true.
З чого почати
- Symfony-застосунок — SDK Bundle: встановлення: конфіг постачальника і одна команда
bin/console ufo:sdk:generate. - Інший PHP-проєкт — Client SDK: генерація.