Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

A notação [Required] não surtiu efeito

Na aula 03, item 10, e em outros pontos aparece a notação [Required], contudo eu submeto o post pelo swagger e não está exigindo que o atributo requerido seja passado:

public record MusicaRequest([Required] string nome, [Required] int ArtistaId,int anoLancamento);

Porque não está exigindo que seja passado?

Por favor, mostre como fazer com que o swagger exija que estes atributos sejam passados no json, neste contexto de api minima.

Obrigado.

2 respostas

Como não consigo ver seu código, vai ser um pouco difícil acertar na resposta, mas pensei em algumas coisas:

  • Talvez esteja com a dll antiga e executando encima dela: faça Rebuild solution, ou Clean Solution + Build.
  • Conferir se está utilizando a classe correta, nas referências, no using etc...
  • Usando o swagger, quando vai fazer a requisição, ele seta como padrão string, então pode ser que o nome venha com o valor 'string' e nesse caso ele está sendo preenchido mesmo.
solução!

Gabriel, obrigado pelo retorno, desculpe eu não ter postado o código, mas é só baixar o código do projeto, tem o [Required], mas não funciona.

Eu pesquisei e encontrei algumas maneiras de fazer isso, tentei a mais fácil e resolveu, por exemplo no dto de generos, em vez de usar assim, que não surte efeito:

public record GeneroRequestPost([Required] string nome, [Required] int anoSurgimento, [Required] string descricao, [Required] string posicionamento);

Usei da forma abaixo, desta forma o swagger já reclama se eu não passar algum atributo required no JSON:

public record GeneroRequestPost
{
    public required string Nome { get; init; }
    public required int AnoSurgimento { get; init; }
    public required string Descricao { get; init; }
    public required string Posicionamento { get; init; }
};