Вікі-код для 1. Встановлення

Остання зміна 2024/07/11 09:57 автором Ashterix

Показати останніх авторів
1 {{box cssClass="floatinginfobox" title="**Зміст**"}}
2 {{toc/}}
3 {{/box}}
4
5 = Крок 0: Налаштування composer.json =
6
7 Для того, щоб при додаванні пакету, ваш Symfony Flex автоматично зробив всі необхідні налаштування, потрібно внести наступні зміни в ваш {{code language="none"}}composer.json{{/code}}
8
9 {{code language="json" layout="LINENUMBERS" title="composer.json"}}
10 {
11 "extra" : {
12 "symfony": {
13 "endpoint": [
14 "https://api.github.com/repos/ufo-tech/recipes/contents/index.json?ref=main",
15 "flex://defaults"
16 ]
17 }
18 },
19 }
20 {{/code}}
21
22 {{info}}
23 Детально про Symfony Flex в [[документації Symfony>>url:https://symfony.com/doc/current/setup/flex_private_recipes.html]]
24 {{/info}}
25
26
27 = Крок 1: Встановлення =
28
29 В консолі в теці проєкту виконайте цю команду, щоб завантажити останню версію цього пакету:
30
31 {{code language="bash"}}
32 composer require ufo-tech/json-rpc-bundle
33 {{/code}}
34
35 {{info}}
36 Ця команда актуальна якщо ви встановили Composer глобально, як описано в [[документації>>https://getcomposer.org/doc/00-intro.md]] Composer.
37 {{/info}}
38
39
40
41 = Крок 2: Реєстрація пакету =
42
43 Переконайтесь, що пакет автоматично зареєструвався в файлі {{code language="none"}}config/bundles.php{{/code}} вашого проєкту:
44
45 {{code language="php" layout="LINENUMBERS" title="config/bundles.php"}}
46 <?php
47
48 return [
49 // ...
50 Ufo\JsonRpcBundle\UfoJsonRpcBundle::class => ['all' => true],
51 // ...
52 ];
53 {{/code}}
54
55
56
57 = Крок 3: Додавання параметрів =
58
59 {{warning}}
60 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
61 {{/warning}}
62
63 В разі ручного налаштування бандлу, додайте (% id="cke_bm_4952S" style="display:none" %) (%%)до папки {{code language="none"}}config/packages{{/code}} файл {{code language="none"}}ufo_json_rpc.yaml{{/code}} із таким вмістом:
64
65 {{code language="yaml" layout="LINENUMBERS" title="config/packages/ufo_json_rpc.yaml"}}
66 ufo_json_rpc:
67 security:
68 protected_methods: ['POST'] # Protection of GET and POST requests
69 token_key_in_header: 'Ufo-RPC-Token' # Name of the key in the header
70 clients_tokens:
71 - 'ClientTokenExample' # Hardcoded token example. Importantly!!! Replace or delete it!
72 - '%env(resolve:UFO_API_TOKEN)%' # Token example from .env.local
73
74 # Configuration for API documentation
75 docs:
76 # Optional response details
77 response:
78 key_for_methods: services # Key used to map services for API methods
79 # Information about validations
80 validations:
81 json_schema: false # Indicates if JSON-schema is used for method validation
82 symfony_asserts: false # Indicates if an array of Symfony validation constraints is used
83
84 {{/code}}
85
86 (% class="wikigeneratedid" %)
87 Детальний огляд параметрів налаштування доступний в розділі [[Налаштування бандлу>>doc:docs.JsonRpcBundle.config_v7.config]]
88
89
90
91 = Крок 4: Реєстрація маршрутів =
92
93 {{warning}}
94 **Якщо ви виконали «Крок 0», це налаштовано автоматично і ви можете пропустити цей крок.**
95 {{/warning}}
96
97 (% id="cke_bm_19449S" style="display:none" %) (%%)В разі ручного налаштування бандлу, додайте (% id="cke_bm_4952S" style="display:none" %) (%%)до папки {{code language="none"}}config/routes{{/code}} файл {{code language="none"}}ufo_json_rpc.yaml{{/code}} із таким вмістом:
98
99 {{code language="yaml" layout="LINENUMBERS" title="config/routes/ufo_json_rpc.yaml"}}
100 ufo_json_rpc:
101 resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
102 prefix: /api
103 trailing_slash_on_root: false
104 {{/code}}
105
106 Якщо лишити налаштування як є, то RPC API буде доступне по шляху {{code language="none"}}/api{{/code}} наприклад {{code language="none"}}https://example.com/api{{/code}}
107 Якщо вам потрібно змінити шлях, змініть налаштування маршруту таким чином:
108
109 {{code language="yaml" layout="LINENUMBERS" title="config/routes/ufo_json_rpc.yaml"}}
110 ufo_json_rpc_bundle:
111 resource: ../../vendor/ufo-tech/json-rpc-bundle/config/router.yaml
112 prefix: /my_custom_api_route #вкажіть тут альтернативний шлях
113 trailing_slash_on_root: false
114 {{/code}}
115
116 Тепер API буде доступне по шляху {{code language="none"}}https://example.com/my_custom_api_route{{/code}}
117
118
119
120 = Крок 5: Profit =
121
122 {{success}}
123 **Вітаю!!!** Ваш RPC сервер готовий до роботи!!!
124 {{/success}}
125
126 = Що далі? =
127
128 == А воно точно працює? (с) ==
129
130 GET запит на точку входу поверне документацію по наявним методам і параметрам, які вони приймають.
131
132 {{warning}}
133 Формат документації може змінюватися в залежності від ваших налаштувань. Див. [[Налаштування бандлу>>doc:docs.JsonRpcBundle.config_v7.config]]
134 {{/warning}}
135
136 **{{code language="none"}}GET: /api{{/code}}**
137
138 {{code language="json"}}
139 {
140 "envelope": "JSON-RPC-2.0/UFO-RPC-6",
141 "contentType": "application/json",
142 "description": "",
143 "transport": {
144 "sync": {
145 "scheme": "https",
146 "host": "example.com",
147 "path": "/api",
148 "method": "POST"
149 }
150 },
151 "methods": {
152 "ping": {
153 "name": "ping",
154 "description": "",
155 "parameters": [],
156 "returns": "string",
157 "responseFormat": "string"
158 }
159 }
160 }
161 {{/code}}
162
163 Метод {{code language="none"}}ping{{/code}} встановлений одразу, ви можете одразу виконати POST запит, щоб переконатися, що сервер працює.
164
165 (% id="cke_bm_115746S" style="display:none" %)** **(%%)**{{code language="none"}}POST: /api{{/code}}**
166
167 **Request**:
168
169 {{code language="json"}}
170 {
171 "id": "some_request_id",
172 "method": "ping"
173 }
174 {{/code}}
175
176 **Response**:
177
178 {{code language="json"}}
179 {
180 "id": "some_request_id",
181 "result": "PONG"
182 }
183 {{/code}}
184
185 == Змініть [[налаштування>>doc:docs.JsonRpcBundle.config_v7.config]] під власні потреби ==
186
187
188 == Додайте [[власні процедури>>doc:docs.JsonRpcBundle.add_rpc_service.WebHome]] ==