Зміни в документі Версія 6: Налаштування

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

Від версії 16.1
редаговано Ashterix
дата 2024/05/09 18:24
Змінити коментар: Немає коментарів для цієї версії
До версії 17.1
редаговано Ashterix
дата 2024/05/09 19:17
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -8,11 +8,11 @@
8 8  (% class="wikigeneratedid" %)
9 9  Є можливість налаштувати параметри захисту API та деякі параметри формату даних, що віддається при запиті документації.
10 10  
11 -= {{code language="none"}}security{{/code}} =
11 += Блок {{code language="none"}}security{{/code}} =
12 12  
13 13  Наразі єдиним механізмом захисту доступу до вашого API є встановлення перевірки ключа доступу (api_token).
14 14  
15 -== {{code language="none"}}protected_methods{{/code}} ==
15 +== Параметр {{code language="none"}}protected_methods{{/code}} ==
16 16  
17 17  (% class="wikigeneratedid" %)
18 18  Цей параметр приймає масив назв http методів, які мають бути захищені.
... ... @@ -40,7 +40,7 @@
40 40  
41 41  Перш за все, треба визначитися з назвою токену.
42 42  
43 -== {{code language="none"}}token_key_in_header{{/code}} ==
43 +== Параметр {{code language="none"}}token_key_in_header{{/code}} ==
44 44  
45 45  Компонент {{code language="none"}}RpcSecurity{{/code}} буде шукати в заголовках запиту специфічний ключ, який ви можете встановити в налаштуваннях пакету, значення за замовченням {{code language="none"}}token_key_in_header: 'Ufo-RPC-Token'{{/code}}, ви можете встановити будь-яке інше значення яке відповідає наступним вимогам.
46 46  
... ... @@ -53,25 +53,8 @@
53 53  - Норми RFC: Вимоги до заголовків регулюються документами RFC, які визначають стандарти для протоколів Інтернету. Наприклад, загальні заголовки і їхнє використання описані в RFC 7231.
54 54  {{/spoiler}}
55 55  
56 +== Параметр {{code language="none"}}clients_tokens{{/code}} ==
56 56  
57 -
58 -
59 -
60 -
61 -
62 -
63 -
64 -
65 -
66 -
67 -
68 -
69 -
70 -
71 -
72 -
73 -== {{code language="none"}}clients_tokens{{/code}} ==
74 -
75 75  Тепер слід вказати масив клієнтськіх токенів, які будуть мати доступ до API.
76 76  
77 77  Тут є певна варіативність.
... ... @@ -175,3 +175,188 @@
175 175   Ufo\JsonRpcBundle\Security\Interfaces\ITokenValidator:
176 176   class: App\Services\RpcSecurity\UserTokenValidator
177 177  {{/code}}
161 +
162 += Блок {{code language="none"}}docs{{/code}} =
163 +
164 +Це блок який налаштовує генерацію документації коли ви робите GET запит на RPC Server
165 +
166 +== Секція {{code language="none"}}response{{/code}} ==
167 +
168 +Містить налаштування, що відповідають за вміст відповіді.
169 +
170 +=== Параметр {{code language="none"}}key_for_methods{{/code}} ===
171 +
172 +Цей параметр дозволяє вказати назву ключа у відповіді в якій буде віддаватися масив доступних сервісів.
173 +
174 +Значення за замовченням {{code language="none"}}methods{{/code}}. Може мати будь-яке значення типу рядок.
175 +
176 +{{code language="yaml" layout="LINENUMBERS" title="config/packages/ufo_json_rpc.yaml"}}
177 +ufo_json_rpc:
178 + docs:
179 + key_for_methods: methods
180 +{{/code}}
181 +
182 +{{code language="yaml" layout="LINENUMBERS" title="config/packages/ufo_json_rpc.yaml"}}
183 +ufo_json_rpc:
184 + docs:
185 + key_for_methods: services
186 +{{/code}}
187 +
188 +{{code language="yaml" layout="LINENUMBERS" title="config/packages/ufo_json_rpc.yaml"}}
189 +ufo_json_rpc:
190 + docs:
191 + key_for_methods: some_custom_key
192 +{{/code}}
193 +
194 +=== Параметр {{code language="none"}}validations{{/code}} ===
195 +
196 +Відповідає за відображення в документації методів додаткових блоків, що вказують на вимоги до валідації даних.
197 +
198 +Наразі цей блок має два можливих налаштування:
199 +
200 +* {{code language="none"}}json_schema: <bool>{{/code}}
201 +* {{code language="none"}}symfony_asserts: <bool>{{/code}}
202 +
203 +У всіх опцій в цьому параметрі значення за замовченням {{code language="none"}}false{{/code}}, тобто ці блоки не будуть відображатися в документації.
204 +Якщо ви потребуєте якийсь з цих блоків інформації при запиті документації, то встановіть значення в {{code language="none"}}true{{/code}}.
205 +
206 +{{code language="yaml" layout="LINENUMBERS" title="config/packages/ufo_json_rpc.yaml"}}
207 +ufo_json_rpc:
208 + docs:
209 + json_schema: true
210 + symfony_asserts: true
211 +{{/code}}
212 +
213 +==== **Приклад документації ** ====
214 +
215 +(% class="box infomessage" %)
216 +(((
217 +В цьому прикладі я видалив вміст обʼєктів symfony_assertions для спрощення прикладу.
218 +Детальніше про валідацію методів дивись сторінку **[[Валідація процедур>>doc:.add_rpc_service.assertions.WebHome]]**
219 +)))
220 +
221 +{{code language="json" layout="LINENUMBERS" title="GET: /api"}}
222 +{
223 + "envelope": "JSON-RPC-2.0/UFO-RPC-6",
224 + "transport": "POST",
225 + "target": "/api",
226 + "contentType": "application/json",
227 + "description": "",
228 + "methods": {
229 + "getUserNameByUuid": {
230 + "name": "getUserNameByUuid",
231 + "description": "Get username by id",
232 + "parameters": {
233 + "userId": {
234 + "type": "string",
235 + "name": "userId",
236 + "description": "User id in uuid format",
237 + "optional": false
238 + }
239 + },
240 + "returns": "string",
241 + "responseFormat": "string",
242 + "json_schema": {
243 + "$schema": "http://json-schema.org/draft-07/schema#",
244 + "type": "object",
245 + "properties": {
246 + "userId": {
247 + "type": "string"
248 + }
249 + },
250 + "required": [
251 + "userId"
252 + ]
253 + },
254 + "symfony_assertions": {
255 + "userId": [
256 + {
257 + "class": "Symfony\\Component\\Validator\\Constraints\\Uuid",
258 + "context": {}
259 + }
260 + ]
261 + }
262 + },
263 + "sendEmail": {
264 + "name": "sendEmail",
265 + "description": "Send mail",
266 + "parameters": {
267 + "email": {
268 + "type": "string",
269 + "name": "email",
270 + "description": "",
271 + "optional": false
272 + },
273 + "subject": {
274 + "type": "string",
275 + "name": "subject",
276 + "description": "",
277 + "optional": false
278 + },
279 + "text": {
280 + "type": "string",
281 + "name": "text",
282 + "description": "",
283 + "optional": false
284 + }
285 + },
286 + "returns": "boolean",
287 + "responseFormat": "boolean",
288 + "json_schema": {
289 + "$schema": "http://json-schema.org/draft-07/schema#",
290 + "type": "object",
291 + "properties": {
292 + "email": {
293 + "type": "string",
294 + "format": "email"
295 + },
296 + "subject": {
297 + "type": "string",
298 + "minLength": 1,
299 + "maxLength": 100
300 + },
301 + "text": {
302 + "type": "string",
303 + "minLength": 10
304 + }
305 + },
306 + "required": [
307 + "email",
308 + "subject",
309 + "text"
310 + ]
311 + },
312 + "symfony_assertions": {
313 + "email": [
314 + {
315 + "class": "Symfony\\Component\\Validator\\Constraints\\Email",
316 + "context": {}
317 + }
318 + ],
319 + "subject": [
320 + {
321 + "class": "Symfony\\Component\\Validator\\Constraints\\NotBlank",
322 + "context": {}
323 + },
324 + {
325 + "class": "Symfony\\Component\\Validator\\Constraints\\Length",
326 + "context": {}
327 + }
328 + ],
329 + "text": [
330 + {
331 + "class": "Symfony\\Component\\Validator\\Constraints\\NotBlank",
332 + "context": {}
333 + },
334 + {
335 + "class": "Symfony\\Component\\Validator\\Constraints\\Length",
336 + "context": {}
337 + }
338 + ]
339 + }
340 + }
341 + }
342 +}
343 +{{/code}}
344 +
345 +