#[RPC\Assertions]
Остання зміна 2024/05/19 21:22 автором Ashterix
Summary
Classname | Assertions | |
Namespace | Ufo\RpcObject\RPC | |
Target | parameter | |
Arguments: | ||
$assertions | Collection of Symfony Constraint | |
type | array | |
optional | false |
Валідація вхідних параметрів
Замість того, щоб перевіряти чи відповідають вимогам бізнес-лгіки параметри, що зайшли до вашого API методу, ви можете застосувати потужний механізм Symfony Validation, а точніше ви можете вказати вимоги до кожного параметра і RPC API Server сам провалідує вхідні дані і в разі невідповідності поверне клієнту помилку (докладніше про обробку помилок).
Для того, щоб скористатися цією можливістю, ви маєте додати до параметра, який хочете провалідувати, атрибут #[RPC\Assertions], який являє собою контейнер-адаптер, що передає RPC серверу ваші очікування щодо вмісту параметра.
RPC\Assertions приймає абсолютно всі класи, що наслідують Symfony Constraint, і навіть ваші власні реалізації. Перелік тих, що вже є в Symfony.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<?php
namespace App\Api\Procedures;
use Symfony\Component\Validator\Constraints as Assert;
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
use Ufo\RpcObject\RPC;
class ExampleApi implements IRpcService
{
public function sendEmail(
#[RPC\Assertions([
new Assert\Email(),
])]
string $email,
#[RPC\Assertions([
new Assert\NotBlank(),
new Assert\Length(max: 100),
])]
string $subject,
#[RPC\Assertions([
new Assert\NotBlank(),
new Assert\Length(min: 10),
])]
string $text
): bool
{
// some logic send email
return true;
}
}
namespace App\Api\Procedures;
use Symfony\Component\Validator\Constraints as Assert;
use Ufo\JsonRpcBundle\ApiMethod\Interfaces\IRpcService;
use Ufo\RpcObject\RPC;
class ExampleApi implements IRpcService
{
public function sendEmail(
#[RPC\Assertions([
new Assert\Email(),
])]
string $email,
#[RPC\Assertions([
new Assert\NotBlank(),
new Assert\Length(max: 100),
])]
string $subject,
#[RPC\Assertions([
new Assert\NotBlank(),
new Assert\Length(min: 10),
])]
string $text
): bool
{
// some logic send email
return true;
}
}