Зміни в документі #[RPC\Assertions]

Остання зміна 2024/05/19 21:22 автором Ashterix

Від версії 2.1
редаговано Ashterix
дата 2024/05/10 14:59
Змінити коментар: Немає коментарів для цієї версії
До версії 1.1
редаговано Ashterix
дата 2024/05/10 11:15
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -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}}