Зміни в документі Версія 6: Налаштування
Остання зміна 2024/07/11 10:07 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -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 +