Um momento
Aula 11
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Como Consolidar Roteamento em Uma So Função - Golang API JSON

Antes de iniciarmos a implementação da rota de excluir um livro, temos que fazer uma refatorização do código.

Modificamos o código e movemos a chamada das funções relacionadas a rota /livros para a função rotearLivros.

Summary

Resumo da Aula de Golang - Implementação da API JSON CruidSimples

Nesta aula, o foco foi a implementação da API JSON CruidSimples, onde o instrutor trabalhou em uma rota para excluir um livro da lista. A seguir estão os principais pontos abordados:

  1. Consolidação de Rota:

    • A estrutura das rotas foi ajustada para consolidar as rotas de "Livros" e "Livros/".
    • A rota principal definida foi Barra Livros, que agora abrange subdiretórios, permitindo flexibilidade nas requisições.
  2. Manipulação de Caminhos:

    • O código foi modificado para dividir a URL recebida em partes e lidar com vários casos:
      • O caso base da rota Barra Livros.
      • A possibilidade de haver uma barra adicional (Barra Livros/), que deve ser tratada sem erro.
  3. Implementação da Função de Excluir Livro:

    • Iniciou-se a implementação para tratamento da exclusão de um livro com base no ID passado na URL.
    • O código verifica se o comprimento das partes da URL é adequado e realiza o chamado da função de buscar livro.
  4. Tratamento de Erros e Respostas:

    • Discussão sobre retornos adequados como HTTP Status Not Found para rotas que não correspondem a livros existentes.
    • O instrutor lembrou de usar boas práticas na formatação das respostas JSON.
  5. Refatoração:

    • Foi sugerida a refatoração do código, especialmente em partes repetidas como a definição do cabeçalho JSON, promovendo melhor organização e reutilização de código.
  6. Testes via Postman:

    • Foram realizados testes no Postman para validar as rotas criadas e certificar-se de que todos os endpoint estavam funcionando como esperado.
  7. ** Próximos Passos**:

    • A aula culminou com a intenção de continuar na próxima sessão, onde mais funcionalidades poderiam ser adicionadas.

Observações Finais

A aula enfatizou a importância de estruturar bem as APIs e o tratamento adequado de rotas e respostas para garantir uma experiência de usuário robusta. A refatoração do código foi também um ponto-chave, visando a manutenibilidade do sistema.

Video Transcript

Olá pessoal, estamos de volta com mais uma aula de Golang. Vamos continuar a nossa implementação da nossa API JSON, CruidSimples. Acabamos de criar uma rota para poder encontrar um livro. Agora que tal a gente criar uma rota para poder excluir um livro da lista. Então vamos lá, vamos fazer o seguinte. Eu acho que tem dois cantos onde vai para o Barra Livros. Vamos consolidar isso em só um, eu vou passar tudo lá para rotiar livros e esse buscar livro vai ser chamado lá do rotiar livros. Então vamos fazer o seguinte. Pega aqui para o Livros, Barra Livros Barra Livros Barra e eu vou mandar lá para o rotiar livros. Então a rotiar livros é chamado Barra Livros e Barra Livros Barra. O Barra Livros Barra vai casar com qualquer padrão que tenha subdiretórios dentro de Barra Livros. O Barra Livros vai ser padrão exato. Vamos lá no rotiar livros. Agora por rotiar livros também vai ter o Barra Livros, pode ter agora o Barra Livros, tanto Get como Post ou qualquer coisa. Também agora tem o Barra Livros Barra que pode ser o quê? Esse pode ser Barra Livros, Barra qualquer coisa, pode ser também Barra Livros, Barra qualquer coisa, Barra qualquer coisa e assim por diante. Então a gente tem que lidar com esses casos aqui. Nesse caso, primeiro caso, vai ser o do Barra Livros, se a gente quebra esse string, pode ter o quebra lá com a barra, vai ter string vazia, vai ter livros e opcionalmente também pode ter, opcionalmente pode ter o Barra Livros, se você bater nesse cara aqui que vem do Barra Livros Barra, pode acontecer também. Então vamos lidar com esses. Então, por primeiro a gente vai restri só para o Barra Livros aqui. Então vamos fazer o seguinte, vamos quebrar o caminho que está no r.url.path. Vamos dar um splitter nesse cara na barra, o splitter vem de qual pacote? Strings, ponto. Quando você dá esse splitter aqui ele vai splitter assim ou assim nesse caso aqui. Eu vou chamar isso de partes da r.url, qualquer coisa que você quiser chamar. Agora, se o partes, a length, comprimento for 2 ou for 3 com o vazio na verdade não é barra vazio aqui. Então, primeiro, se a length for 2 pode ser, vai aqui mesmo. Deixa eu escrever as chaves. Entendeu? Se o comprimento de partes for 2, o caso vai ser do Barra Livros assim, porque se ele quebrar em 2, 2 elementos é a String Vazio e o Livros. Então está correto. Mas, simplesmente, é outro caso, em ter uma barra depois do Livros. Então, vai adicionar o caso de o, se o length, o partes for 3 e o partes, o terceiro elemento que começa contando 0, 1, 2, for vazio. Só se for vazio. Nesse caso aqui, para lidar com esse caso aqui, tá? Vamos testar se não deu, não é um problema. A inicial servidor, dá, faltou lá no postman, vou testar o get do Livros. Funcionou, vai adicionar a barra, aquele caso especial. Funcionou da mesma maneira, tá? Agora, se adicionar os outros aqui, não vai dar em nada que é o else. Mas, ainda vai 200 ok, a gente deveria retornar, não encontrar. Então, no caso do else, poderia ter retornado W.write header, http status, not found, por exemplo. Nesse caso, ele não encontraria nenhuma rota. Ou qualquer bad request, sei lá qual é o que você quiser aí. Como você quiser escrever o API, no caso da rota, não sei encontrar. Vamos testar o post, não testei. Do postman, post, barra Livros. Parece que funciona, o get no barra Livros, barra. Tá, o novo livro aqui. Certo? Muito bem. Voltou no editor de texto, agora fazer buscar a barra Livros lá que a gente desativou. Vamos adicionar um elsef aqui. Elsef para o barra Livros. Qual é a condição aqui? A condição vai ser se o link do participa 3, porque esse que vai lidar com esse caso aqui, esse caso seria um dos 3, por exemplo. Sempre vai ser 3, a link. Vai ser a estrangeva, Livros e o ID. Então, sempre é 3. Note que o terceiro elemento não será estrangeva por causa dessa condição aqui da ID. Depois se esse cara que for bater aqui, nós já sabemos que ele vai ter alguma coisa. Se porque se fosse vazia no terceiro elemento, iria bater nessa parte aqui, que é o caso do Livros. Então, sabe menos que o ID vai estar lá. Nesse caso, a gente tem que chamar o buscar Livro com W e com R. E ele vai bater aqui no buscar Livros, ele pode até fazer parte de novo, né, para extrair de novo e pegar o ID e vai funcionar da mesma maneira. Vamos ver. A barra Livros, barra 2, funcionou. Se eu não tiver nada, vai estar todos, certo. Barra 3, certo. Vamos ver se funciona com a barra ou outra coisa. Não funciona. Eu também não lhe dei com esse caso do barra. 3 barra, acho. 3 barra. Esse caso seria 1, 2, 3, 4 elementos com 4 sendo vazio, né. Se você quiser fazer isso, o que você adicionaria aqui para poder fazer isso funcionar nessa condição aqui? Ou Lang Parts igual a 4 e o Parts, o terceiro elemento, né. O terceiro não, é o 4. 4 menos 1, 3, mais quanto não é vazia. Vamos ver. Assegou que sempre ponho o parênteses no local errado. Está parênteses aqui. Vai no postman. Isso funciona agora, é isso com a barra. Não, funcionou. Será que eu errei aqui? Sim, Parts, vamos ver. Se tivesse barra Livros, barra 1, 2, 3, barra quebraça string, seria vazia Livros, 1, 2, 3 e vazia. Esse caso Lang é 4, correto e o Parts sobre 0, 1, 2, 3 é vazia. Buscar Livros. Ah, está correto na verdade. Por causa dessa parte aqui, linhas 88, 91 não precisamos mais, porque a gente já está lidando aqui na linha 27, 79, tá. Então, quando você chama buscar Livros, nós vamos... a condição é de que sempre vai ser essa rota aqui sem mais nada a mais. Por isso agora a gente não precisa mais dessa parte. O deletar. Salvar. Funcionou com a barra e sem a barra. Muito bem. Voltando aqui ao código. Legal buscar Livros já está funcionando, mas a gente não fez eskuir ainda. Você pode até estar factorizado nessa parte aqui, aqui se quiser, mas deixa eu comer exercício. Uma coisa que a gente poderia fazer depois é factorizar esse header aqui para sempre se for JSON. Como buscar Livros, carastrar Livros, listar Livros todos fazem essa coisa aqui no começo, a gente pode extrair isso e colocar no rotear Livros, vamos ver se funciona. Eu vou dar o header do JSON aqui em cima já. Aí remover do carastrar lá em cima e do listar e também do buscar... certo, eu fatorei, né, no rotear Livros. Vamos ver se não teve nenhum problema. Reinicia o seu ido aqui, eu pode compilar novamente. Agora vai lá no Postman. Deixa eu dar o get barra Livros. O header está no JSON, certo. Barra Livros, barra 2, raro JSON, certo. Post, Post, local Livros, o header está JSON, certo. Tá bom? Vamos de volta ao editor de texto. Nós vamos agora criar... Até lá tá, tá na próxima aula. Até mais.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: