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

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

Від версії 1.2
редаговано Ashterix
дата 2024/05/10 12:59
Змінити коментар: Немає коментарів для цієї версії
До версії 1.3
редаговано Ashterix
дата 2024/05/10 13:13
Змінити коментар: Немає коментарів для цієї версії

Підсумок

Подробиці

Властивості сторінки
Вміст
... ... @@ -23,4 +23,41 @@
23 23  
24 24  = Валідація вхідних параметрів =
25 25  
26 -Замість того, щоб перевіряти чи відповідають параметри, що зайшли до вашого API методу, ви можете застосувати потужний механізм [[Symfony Validation>>https://symfony.com/doc/current/validation.html]], а точніше ви можете вказати вимоги до кожного параметра і RPC Server сам провалідує вхідні дані і в разі не відповідності поверне
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}}