Olá, Rafaela!
Pelo que entendi, você está tentando validar os dados de entrada do seu POST e está encontrando problemas, pois mesmo inserindo dados inválidos, o código está sendo executado normalmente.
Acredito que o problema possa estar na forma como você está testando a validação. Quando você insere " " (espaço em branco) para os campos "Titulo" e "Genero", na verdade, você não está inserindo um valor nulo ou vazio, mas uma string que contém um espaço. Para o .NET, isso é um valor válido, por isso a validação não está funcionando como esperado.
Se você tentar enviar um POST com os campos "Titulo" e "Genero" realmente vazios, como no exemplo abaixo, a validação deve funcionar corretamente:
{
"Titulo" : "",
"Genero" : "",
"Duracao" : -120
}
Além disso, para validar se um campo não é apenas não nulo, mas também não é uma string vazia ou composta apenas por espaços em branco, você pode usar a anotação [MinLength]
, que define um comprimento mínimo para a string. Para verificar se a string tem pelo menos um caractere que não seja espaço em branco, você pode usar [MinLength(1)]
.
Aqui está um exemplo de como ficaria o seu código:
using System.ComponentModel.DataAnnotations;
namespace FilmesApi2.Models;
public class Filme
{
[Required(ErrorMessage = "Titulo Obrigatório")]
[MinLength(1, ErrorMessage = "Titulo Obrigatório")]
public string Titulo { get; set; }
[Required(ErrorMessage = "O genero é obrigatório")]
[MinLength(1, ErrorMessage = "O genero é obrigatório")]
[MaxLength(50, ErrorMessage ="O tamanho do genero não pode exceder 50 caracteres")]
public string Genero { get; set; }
[Required]
[Range(70, 600, ErrorMessage ="A duração deve ser entre 70 e 600 minutos!")]
public int Duracao { get; set; }
}
Espero ter ajudado e bons estudos!