Aula 47
Aprimoramento do Codigo - Funcao de Validacao de Estrutura - Aula de Go API JSON MySQL
Criamos a função validarLivro
, que se responsabiliza por checar as propriedades de um Livro e retorna uma mensagem de erro se for o caso.
Checamos o número de caracteres em cada campo. Também criamos um limite para o número de caracteres para o Autor e para o Titulo do Livro.
Summary
# Resumo da Aula de Golang
Na aula de hoje, o instrutor deu continuidade à implementação da API em Golang, focando na refatorização da validação do cadastro de livros. Aqui estão os principais pontos abordados:
- **Refatorização da Validação**: O instrutor motivou os alunos a melhorarem a lógica de validação. A abordagem apresentada consiste em encapsular as regras de validação em uma função chamada `validarLivro`.
- **Função `validarLivro`**:
- Esta função recebe um objeto do tipo livro e retorna uma string que representa um erro de validação, ou uma string vazia se não houver erros.
- A lógica de validação é simplificada para retornar apenas o primeiro erro detectado, ao invés de múltiplos erros.
- **Implementação**:
- O instrutor removeu a lógica de validação do fluxo principal e a implementou dentro da função `validarLivro`.
- A validação incluiu checagens para autor e título do livro, como: se o autor foi fornecido e se o título não ultrapassa 100 caracteres.
- **Testes**:
- O instrutor demonstrou testes das validações, mostrando como a função se comporta ao receber um título com 101 caracteres (retornando um erro) e ao não fornecer um título (também retornando um erro).
- **Possibilidades Futuras**:
- O instrutor mencionou que é possível modificar a função para retornar múltiplos erros, permitindo que uma lista de erros seja enviada ao cliente em vez de apenas um erro.
Ao final da aula, o instrutor concluiu, encorajando os alunos a aplicarem as mudanças e experimentarem com a lógica da validação.
Video Transcript
O lapeçoal estamos de volta com mais uma aula de Golang.
Vamos continuar a implementação da API.
Nesta aula vai ser uma aula só de refatorização da validação aqui no cadastralivres.
Eu tinha deixado como um exercício para você melhorar isso.
Então eu vou te apresentar uma maneira de fazer isso, maneira bem simples.
Essa maneira é só retorna um erro ao cliente, não retorna múltiples erros.
Então vai um erro, qualquer que seja o primeiro erro que detectar que vai ser enviado.
Então vamos lá.
A gente vai fazer o seguinte, em vez de ter a lógica de validação aqui,
a gente vai extrair tudo para uma função chamada validar livre.
Então a gente vai chamar validar livre e vai passar um novo livro para essa função.
Essa função vai retornar o seguinte, vai retornar uma string com o erro de validação.
Se não houver nenhum erro, a string vai ser vazia.
Bem simples, tá?
Então erro, validação, eu escolho a igualidade da livre.
Tá?
Então se tiver erro, validação, isto é a string, né?
O comprimento maior que zero, isto não é uma string vazia, então vai ter um erro.
E nesse erro a gente vai fazer uma coisa que a gente fez aqui anteriormente.
Mas em vez de ter essa mensagem aqui, essa mensagem vai vir da ler de validação.
Que é a string do erro.
Tá?
E a gente vai encapsular essas regras de validação na função validar livre.
Então deixa eu cortar isso aqui.
Vamos deixar assim.
Se tiver um erro, um string de validação, você manda aquele erro.
Então vamos definir validar livre, validar livre.
Vou aqui antes de que eu arrastar, validar livre.
Levo um livro, tipo livre, chamar de livre.
Retorna uma string que é a descrição do erro ou a string vazia se não tiver erro.
Vou colar.
Agora vou fazer o seguinte, em vez de novo o livro vai ser livre.
Não vai ter mais esse encoder aqui, nem esse right header.
Então vou tirar o right header.
Agora do parte do encoder, só preciso da string aqui que vai ser retornada.
Dessa maneira aqui.
Então se ele checa que o autor não foi fornecido, ou se passa do limite de caracteres,
ele retorna o erro, a mensagem de erro.
Mesma coisa, se o autor tá certo, tá válido, passa pro próximo if.
Então checa o título e tal, se tiver erro, a gente vai retornar a mensagem de erro.
E se tiver tudo certo, aqui no final retorna, string vazia.
Não houve erro de validação, tá?
Spring vazia significa isso nesse caso.
Então temos todas as regras de validação aqui encapsuladas na função de validar.
Você pode adicionar mais regras aqui e retorna o mensagem de erro pra cada regra, tá?
Se você quiser se separar esse aqui, por exemplo,
eu quero separar esse aqui pra botar mensagem diferente,
mas normalmente é sempre bom simplificar tudo, né?
Pra somar uma mensagem, como a gente vê na linha 83.
Mas se você quiser adicionar nova regra, só fazer isso.
Por exemplo, if, no seu key, retorne, título não pode ter mais de 100 caracteres.
Título não foi fornecido.
Então se o título não for fornecido, vai falar isso e for maior que 100, vai falar isso.
Vamos testar?
Deixa eu dar aqui.
Eu já tenho aqui 100 e 1 caracteres pro título.
Ele falou que o título não pode ser mais de 100.
Agora se não passar o título, o título não foi fornecido.
Erro mensagem diferente, tá?
Então por aí isso.
Opa, deixa eu ver se funcionou 100 caracteres.
Funcionou sem problemas.
Mesmo com o autor, tá?
Vamos testar o autor, ver se eu não fiz nada de errado.
Mais um, certo?
Menos um, 50, tá certo? Tudo certo.
Tá?
Então, como eu já falei antes, se a gente retorna um erro,
então é múltiplo erro.
Se você quiser, poderia modificar essa função pra retornar múltiplo erro.
Se você quiser retornar uma lista de erros pro cliente,
modificaria a resposta aqui pra ser partida de string.
Em vez de retornar aqui, você vai compilando uma lista de erros
e adicionando pra essa lista no final, retorna a lista, tá?
Isso é uma ideia que você pode fazer.
E a lista vazia significaria que não teve nenhum erro.
Tá?
Então, por essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: