docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api
uk/docs/api/sdk/bundle/config.md
new file +50
−0
Налаштування SDK Bundle
Файл config/packages/json_rpc_sdk.yaml, кореневий ключ json_rpc_sdk.
json_rpc_sdk:
namespace: App\Sdk # корінь простору імен згенерованих класів
generate_url_in_attr: false
cache:
ttl: 3600 # кеш документації під час генерації, секунди
vendors:
- name: Orders
url: 'https://orders.example.com/rpc'
token_key: 'Ufo-RPC-Token'
token: '%env(resolve:ORDERS_API_TOKEN)%'
async_secret: '%env(resolve:ORDERS_ASYNC_SECRET)%'
ignore_methods: ['Admin.*', '~Report.*']
- name: Billing
url: '%kernel.project_dir%/docs/billing-openrpc.json'
| Параметр | За замовчуванням | Опис |
|---|---|---|
namespace |
App\Sdk |
Простір імен; класи постачальника — у <namespace>\<Name> (назва в CamelCase) |
generate_url_in_attr |
false |
Записувати адресу сервера в атрибут класу (зараз не діє — див. Актуальні помилки) |
cache.ttl |
3600 |
Скільки зберігати документацію сервера в cache.app під час генерації |
vendors[].name |
— (обов'язковий) | Назва постачальника: частина простору імен і ключ у sdk_config.yaml |
vendors[].url |
— (обов'язковий) | Адреса документації OpenRPC (https://…/rpc) або шлях до локального JSON-файлу |
vendors[].token_key |
— | Назва заголовка з токеном (як security.token_name сервера) |
vendors[].token |
— | Токен |
vendors[].async_secret |
— | user:password асинхронного транспорту; підставляється в DSN замість {rpc_async_secret} |
vendors[].ignore_methods |
[] |
Маски методів, які не генерувати чи генерувати лише sync/async |
Як використовуються токени
- Під час генерації
token_keyіtokenнадсилаються в заголовку запиту документації, тож працює й захищенаprotected_docдокументація. - Під час виклику синхронні класи отримують заголовок
[token_key => token], асинхронні —token(у повідомленні черги) іasync_secret. - Токен підставляється лише тоді, коли задано обидва параметри
token_keyіtoken.
Зберігайте токени й секрети у змінних оточення (.env.local, секрети Symfony), а не в YAML-файлі в репозиторії.
Кілька серверів
Кожен елемент vendors — окремий сервер з власним простором імен (App\Sdk\Orders, App\Sdk\Billing), токеном і записом у sdk_config.yaml. Для різних версій чи груп API одного сервера створюйте окремих постачальників з відповідними адресами (/rpc/v2, /rpc/internal).
Адреси під час виконання
Адреса, на яку надсилаються запити, береться не з vendors[].url, а з sdk_config.yaml / sdk_config.yaml.dist, що генерується поруч із класами (адреса з документації сервера). Щоб використовувати іншу адресу в оточенні, створіть sdk_config.yaml з потрібними значеннями — див. Генерація.