Встановлення JsonRpcBundle

← Встановлення JsonRpcBundle

Ashterix

docs: rewrite JsonRpcBundle docs, add SDK docs, move them under docs/api

uk/docs/api/json-rpc-bundle/installation.md новий файл +153 −0

1 + # Встановлення JsonRpcBundle
2 +
3 + :::info
4 + Вимоги версії 10.x: PHP >= 8.4, Symfony ^7.2 або ^8.0, розширення `ext-dom` і `ext-sysvsem`.
5 + :::
6 +
7 + ## Крок 0: Налаштування composer.json
8 +
9 + Щоб Symfony Flex автоматично зробив усі налаштування при встановленні пакета, додайте репозиторій рецептів UFO-Tech у ваш `composer.json`:
10 +
11 + ```json
12 + {
13 + "extra" : {
14 + "symfony": {
15 + "endpoint": [
16 + "https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
17 + "flex://defaults"
18 + ]
19 + }
20 + }
21 + }
22 + ```
23 +
24 + :::info
25 + Детально про приватні рецепти Symfony Flex — в [документації Symfony](https://symfony.com/doc/current/setup/flex_private_recipes.html).
26 + :::
27 +
28 + ## Крок 1: Встановлення
29 +
30 + У теці проєкту виконайте команду, щоб завантажити останню версію пакета:
31 +
32 + ```bash
33 + composer require ufo-tech/json-rpc-bundle
34 + ```
35 +
36 + ## Крок 2: Реєстрація пакета
37 +
38 + Переконайтесь, що пакет зареєструвався в `config/bundles.php`:
39 +
40 + ```php
41 + return [
42 + // ...
43 + Ufo\JsonRpcBundle\UfoJsonRpcBundle::class => ['all' => true],
44 + // ...
45 + ];
46 + ```
47 +
48 + ## Крок 3: Налаштування
49 +
50 + :::warning
51 + Якщо ви виконали **«Крок 0»**, файл створено автоматично і цей крок можна пропустити.
52 + :::
53 +
54 + Додайте файл `config/packages/ufo_json_rpc.yaml` з мінімальною конфігурацією:
55 +
56 + ```yaml
57 + # config/packages/ufo_json_rpc.yaml
58 + ufo_json_rpc:
59 + security:
60 + protected_api: true # перевіряти токен для RPC-запитів
61 + protected_doc: false # документація відкрита
62 + token_name: 'Ufo-RPC-Token' # назва заголовка з токеном
63 + clients_tokens:
64 + - '%env(resolve:UFO_API_TOKEN)%'
65 +
66 + docs:
67 + project_name: 'My Project'
68 + ```
69 +
70 + і токен у `.env.local`:
71 +
72 + ```dotenv
73 + UFO_API_TOKEN=change-me
74 + ```
75 +
76 + Усі параметри описані в розділі [Налаштування бандлу](/docs/api/json-rpc-bundle/config).
77 +
78 + ## Крок 4: Реєстрація маршрутів
79 +
80 + :::warning
81 + Якщо ви виконали **«Крок 0»**, файл створено автоматично і цей крок можна пропустити.
82 + :::
83 +
84 + Додайте файл `config/routes/ufo_json_rpc.yaml`:
85 +
86 + ```yaml
87 + # config/routes/ufo_json_rpc.yaml
88 + ufo_json_rpc:
89 + resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
90 + prefix: /rpc
91 + trailing_slash_on_root: false
92 + ```
93 +
94 + API буде доступне за адресою `https://example.com/rpc`. Щоб змінити шлях, змініть `prefix`.
95 +
96 + :::info
97 + До версії 10 шаблон встановлення використовував префікс `/api`. Наявні файли маршрутів при оновленні не змінюються, тож старі проєкти працюють за попередньою адресою.
98 + :::
99 +
100 + Один застосунок може мати кілька точок входу з різними наборами методів — див. [Групи API](/docs/api/json-rpc-bundle/functionality/groups).
101 +
102 + ## Крок 5: Profit
103 +
104 + :::success subtitle="Вітаю!!!"
105 + Ваш RPC сервер готовий до роботи!!!
106 + :::
107 +
108 + ## Перевірка
109 +
110 + > А воно точно працює? (с)
111 +
112 + | Запит | Що повертає |
113 + | --- | --- |
114 + | `GET /rpc` | Документ [OpenRPC](https://spec.open-rpc.org/) з усіма методами |
115 + | `GET /rpc?info` | Лише заголовок документа (info, servers), без методів |
116 + | `GET /rpc/postman` | Колекцію Postman |
117 + | `POST /rpc` | Виконує JSON-RPC запит |
118 +
119 + Метод `ping` встановлено одразу, тож можна виконати `POST` запит:
120 +
121 + ::::columns
122 + :::col
123 + **Request**:
124 + ```bash
125 + curl -X POST https://example.com/rpc \
126 + -H 'Content-Type: application/json' \
127 + -H 'Ufo-RPC-Token: change-me' \
128 + -d '{"jsonrpc": "2.0", "id": 1, "method": "ping"}'
129 + ```
130 + :::
131 +
132 + :::col
133 + **Response**:
134 + ```json
135 + {
136 + "jsonrpc": "2.0",
137 + "id": 1,
138 + "result": "PONG"
139 + }
140 + ```
141 + :::
142 + ::::
143 +
144 + Те саме з консолі:
145 +
146 + ```bash
147 + php bin/console ufo:rpc:process '{"jsonrpc": "2.0", "id": 1, "method": "ping"}' --ufo-rpc-token=change-me
148 + ```
149 +
150 + ## Що далі?
151 +
152 + * Змініть [налаштування](/docs/api/json-rpc-bundle/config) під власні потреби.
153 + * Додайте [власні методи](/docs/api/json-rpc-bundle/add_rpc_service).