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).