Зміни в документі #[RPC\Assertions]
Остання зміна 2024/05/19 21:22 автором Ashterix
Підсумок
-
Властивості сторінки (1 змінено, 0 додано, 0 видалено)
Подробиці
- Властивості сторінки
-
- Вміст
-
... ... @@ -1,63 +1,0 @@ 1 -{{box cssClass="floatinginfobox" width="400px"}} 2 -== (% style="display:block; margin-top:-30px; text-align:center" %)Summary(%%) == 3 - 4 -(% style="margin-right:auto" %) 5 -|(% style="width:141px" %)**Classname**|(% colspan="2" rowspan="1" style="width:79px" %)((( 6 -Assertions 7 -))) 8 -|(% style="width:141px" %)**Namespace**|(% colspan="2" style="width:79px" %)((( 9 -Ufo\RpcObject\RPC 10 -))) 11 -|(% style="width:141px" %)((( 12 -**Target** 13 -)))|(% colspan="2" rowspan="1" style="width:79px" %)parameter 14 -|(% colspan="3" style="width:141px" %)**Arguments:** 15 -|(% colspan="1" rowspan="3" style="width:141px" %)((( 16 -**$assertions** 17 -)))|(% colspan="2" rowspan="1" style="width:79px" %)**Collection of Symfony**((( 18 -**Constraint** 19 -))) 20 -|(% style="width:79px" %)**type**|(% style="width:153px" %)array 21 -|(% style="width:79px" %)**optional**|(% style="width:153px" %)false 22 -{{/box}} 23 - 24 -= Валідація вхідних параметрів = 25 - 26 -Замість того, щоб перевіряти чи відповідають вимогам бізнес-лгіки параметри, що зайшли до вашого API методу, ви можете застосувати потужний механізм [[Symfony Validation>>https://symfony.com/doc/current/validation.html]], а точніше ви можете вказати вимоги до кожного параметра і RPC API Server сам провалідує вхідні дані і в разі невідповідності поверне клієнту помилку (докладніше про [[обробку помилок>>doc:docs.JsonRpcBundle.error_handling.WebHome]]). 27 - 28 -Для того, щоб скористатися цією можливістю, ви маєте додати до параметра, який хочете провалідувати, атрибут #{{code language="none"}}[RPC\Assertions]{{/code}}, який являє собою контейнер-адаптер, що передає RPC серверу ваші очікування щодо вмісту параметра. 29 - 30 -{{code language="none"}}RPC\Assertions{{/code}} приймає абсолютно всі класи, що наслідують {{code language="none"}}Symfony Constraint{{/code}}, і навіть ваші власні реалізації. [[Перелік тих, що вже є в Symfony>>https://symfony.com/doc/current/validation.html#supported-constraints]]. 31 - 32 -{{code language="php" layout="LINENUMBERS"}} 33 -<?php 34 -namespace App\Api\Procedures; 35 - 36 -use Symfony\Component\Validator\Constraints as Assert; 37 -use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService; 38 -use Ufo\RpcObject\RPC; 39 - 40 -class ExampleApi implements IRpcService 41 -{ 42 - public function sendEmail( 43 - #[RPC\Assertions([ 44 - new Assert\Email(), 45 - ])] 46 - string $email, 47 - #[RPC\Assertions([ 48 - new Assert\NotBlank(), 49 - new Assert\Length(max: 100), 50 - ])] 51 - string $subject, 52 - #[RPC\Assertions([ 53 - new Assert\NotBlank(), 54 - new Assert\Length(min: 10), 55 - ])] 56 - string $text 57 - ): bool 58 - { 59 - // some logic send email 60 - return true; 61 - } 62 -} 63 -{{/code}}