2
respostas

[Bug] [Bug] Código executou mesmo estando errado

{ "Titulo":" ", "Genero": " ", "Duracao": -120 }

Coloquei isso que esta acima e mesmo assim o código executou o POST normal

using System.ComponentModel.DataAnnotations;

namespace FilmesApi2.Models;

public class Filme
{
    [Required(ErrorMessage = "Titulo Obrigatório")]
    public string Titulo { get; set; }
    [Required(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; }
2 respostas

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!

POST https://localhost:7115/filme Error: connect ECONNREFUSED 127.0.0.1:7115 Request Headers Content-Type: application/json User-Agent: PostmanRuntime/7.33.0 Accept: / Postman-Token: 1461f3b4-3fab-4c32-a7dd-5e88426a5c8e Host: localhost:7115 Accept-Encoding: gzip, deflate, br Connection: keep-alive Request Body

Quando envio ele retorna essa mensagem aqui, e não o erro 400 com as minhas mensagens de required

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software