Summary
Classname
Assertions
Namespace
Ufo\RpcObject\RPC
Target
parameter
Constructor
use Symfony\Component\Validator\Constraint;
/**
* Assertions constructor.
*
* @param Constraint[] $assertions
* @param string $constructorArgs
*/
public function __construct(
array $assertions,
public string $constructorArgs = ''
)
{
// ...
}
Валідація вхідних параметрів
Замість того, щоб перевіряти чи відповідають вимогам бізнес-логіки параметри, що зайшли до вашого API методу, ви можете застосувати потужний механізм Symfony Validation, а точніше ви можете вказати вимоги до кожного параметру і RPC API Server сам провалідує вхідні дані, а в разі невідповідності поверне клієнту помилку (докладніше про обробку помилок).
Для того, щоб скористатися цією можливістю, ви маєте додати до параметра, який хочете провалідувати, атрибут #[RPC\Assertions], який являє собою контейнер-адаптер, що передає RPC серверу ваші очікування щодо вмісту параметра.
RPC\Assertions приймає абсолютно всі класи, що наслідують Symfony Constraint, і навіть ваші власні реалізації. Перелік тих, що вже є в Symfony.
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;
}
}