Налаштування SDK Bundle

This page has not been translated yet, showing the version in: UK.

Налаштування 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 з потрібними значеннями — див. Генерація.