Validación de solicitud REST de Symfony 4 API. (DATOS POST)
Continúo aprendiendo Symfony y en esta ocasión me gustaría recibir ideas sobre cómo validar correctamente los datos de solicitud POST antes de almacenarlos. Estoy intentando tener el controlador más pequeño posible. He leído sobre DTO (para implementar la validación usando esto). Además, veo que podemos validar la solicitud utilizando comentarios de entidad. Ejemplo:
use Symfony\Component\Validator\Constraints as Assert;
class Author
{
/**
* @Assert\NotBlank
*/
private $name;
}
Por favor, dame algunos ejemplos de cómo validar los datos de solicitud entrantes en una API REST de Symfony. Como desarrollador de Laravel, puedo decir que podemos hacerlo de esta manera:
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
// El post del blog es válido...
}
O podemos usar TypeHinting:
public function store(StorePostRequest $request)
{
// La solicitud entrante es válida...
// Recuperar los datos de entrada validados...
$validated = $request->validated();
}
¿Cómo podemos hacerlo en Symfony manteniendo la idea de un controlador delgado?
davy.ai
Existen varias formas de validar los datos de solicitud entrantes en Symfony y mantener el controlador delgado:
Symfony proporciona un Componente de Formulario integrado, que puede utilizarse para crear formularios que manejen la validación. Podemos crear un tipo de formulario para los datos de solicitud y definir restricciones utilizando el componente de validación de Symfony. El formulario puede ser manejado automáticamente por Symfony y cualquier error de validación puede ser devuelto en la respuesta.
Utilizando DTO de Solicitud:
Podemos crear un DTO de Solicitud (Objeto de Transferencia de Datos) para nuestros datos de solicitud entrantes y utilizar el componente de validación de Symfony para agregar restricciones a sus propiedades. Luego, podemos utilizar el DTO como argumento para nuestra acción de controlador. Symfony validará automáticamente los datos entrantes basándose en las restricciones definidas en el DTO.
Utilizando la Validación de Entidad:
Como se mencionó en la pregunta, podemos utilizar comentarios de entidad para agregar restricciones de validación a las propiedades de nuestra entidad. Esto puede ser útil cuando solo necesitamos validar los datos con fines de persistencia de datos.
Ejemplo:
Utilizando uno de estos métodos, podemos mantener nuestro controlador delgado y separar la lógica de validación de nuestra lógica de negocio.