Video Transcript
Olá pessoal, estamos de volta com mais uma aula de Golang. Vamos continuar a
implementação da nossa API de JSON, crudisimples em golang.
Vamos continuar a buscar a livro.
Já extraímos o ID da rota, toda essa parafernal aqui, porque estamos usando o
servemux que eu pado no lugar do tp. Então vamos continuar. Depois de extrair o ID,
vamos fazer uma busca na lista de livros lá. Você pode usar um loop e se você encontrar
o livro cujo ID foi o ID que foi fornecido, então a gente retorna isso como resposta,
então a gente dá o not found, não foi encontrado. Vamos lá.
O dação foi aqui, foi índice vírgula, livro, dois pontos igual range, não me dá variar
os livros. Então se o livro, o ID do livro, o livro ponto ID foi igual a o ID que foi
passado, fornecido, note que a gente já convertei para int inteiro, nós vamos dizer
que vamos. Então nesse caso vamos fazer o que? Nós vamos, primeiro a gente tem que
criar um encoder, JSON new encoder com o W, depois de criar o codificador, pode já encode,
pode picar o livro. Se não, se não controlada, você pode já aqui no final, W.write header,
HTTP, status not found, não foi encontrado. Vamos ver se isso funciona. No terminal,
compilando a, STR convia, a, o problema aqui é que o a retorna em duas coisas, deve ser
o segundo argumento, o erro. Deixa só olhar no documentação para confirmar. Vamos lá no
Golan.org packages, STR conv, está aqui um exemplo, eu esqueci do erro que é o atoy retorna
em duas coisas, primeiro é torno inteiro, convertido e o segundo é valor de ator, não é o erro.
Então vou aqui no, em HTTP, como é que vai fazer isso? Qual é o tipo do erro? Que eu não
sei. Vamos ver aqui, índice, ade o atoy, int error, então é do tipo error, erro. Vamos
aqui, error, vamos ver como é inesperado, deve ser porque a minha sintaxi não está correta,
vou fazer assim, funciona, tem problemas, declaro o erro mas não zo, índice declarar mas não zo,
então o gol reclama que eu não usei o erro, não usei índice e quando daí normalmente nesse caso na linha
E83, se você não usar o índice pode usar o underscore aqui no lugar que ele vai parar de reclamar, agora
só dá reclama do erro, então o erro aqui eu posso pôr o underscore, ele parar de reclamar mas aí eu vou esquecer
de lidar com o erro, então exerce isso para você se quiser lidar com o erro, tá bom? Com isso vamos tentar
novamente, sabe do arrodando, ade o postman, vamos testar esse, not found, não encontrou, certo? 1, 2, 3, não encontrou
porque não tem livro com id 123, vamos ver id 2, id 2, id 2, título caso, autor, videato, corria, certo mas
eu acho que o headers, cadê, opa, não veio com Jason o contact type, porque eu não fiz aquele set, tá, então tem que fazer isso também
anualmente se lembra do header set aqui, temos que fazer lá também, note que cara a rota a gente tem que fazer isso, vamos lá
você pode até arranjar uma maneira de refatorizar isso tudo para não poder fazer a mesma coisa sempre, pode até fazer uma função comum que faz todas essas coisas
então aqui em cima, no buscar o primeiro de tudo vamos lá, o w.header, chamada da, dá o set no contact type para application, barra de Jason, para resposta C, desse tipo
certo, vamos no postman, agora esqueci de compilar e rodar, reiniciar o servidor, compira, reinicia, certo, postman, manda lá, agora está application Jason
legal, voltando ao corpo, bari, agora está melhor de ver
bem, bem, bem, bem, se eu botar uma barra aqui o que acontece, oots, não encontrado, então por que, por que se eu pôr uma barra aqui o length lá do part, vai ser 4
então tem esse detalhe também, né, então eu deixei, se você quiser mexer com isso para poder aceitar ou não esse formato aqui com a barra
tá, tá, 200 ok, tudo certo, vamos testar 3, não causo muro, legal, 1, agora a ni, 4 não tem, 404 not found, não encontrado, tudo certo então
se eu não tiver nenhum inteiro, no town, não encontrado, mas ele deve até fazer a busca, não é muito feciente se fosse um boco de idade, então tem esses detalhes, casas especiais que você tem que ver
se tivesse assim dessa maneira o que será que acontece, o que vai bater, se você da quebrar a string as partes vão ser vazia, livros e vazia
então seria vazia, livros e vazia aqui, se não tivesse o id, puxou uma netria 3, maior que 3, não, vai aqui, pega o id, ele dava o strconf no vazia, não sei o que aqui dar, se fosse vazia, será que dava erro, talvez, poderia até dar erro, por isso que eu deixei como exercício
não sei, cabe você ver ai, tá bom, vou deixar para você, voltando aqui, tudo certo, vamos avisar o que fizemos
acurriamos a nova rota aqui, barra, livros, barra, na hora de você dizer barra, livros, barra, com essa barra aqui, todos os subdiretórios dentro desse caminho serão casados, combinação vai corresponder
vai chamar buscar a leira aqui, primeiro de tudo setrara para resposta cj, quebra o rl.path que é o caminho, barra livros, barra alguma coisa, quebra em uma lista, checa que tiver mais coisas que a gente não quer saber, eu dei o nome para, mas por melhor é isso
enfim, extraímos o id, convertimos um stream para um int através do pacote strconf.atoi
fizemos aqui um for loop para poder encontrar o livro lá no nosso list, e no final damos um encode, finalmente damos o write header aqui
e até esse que devia estar errado, esqueci do return aqui, esqueci do return, se não ele vai continuar e vai até fazer o write header aqui
se bem que não fez, é melhor ter o return lá, porque a gente não quer continuar para cá
e se não encontrar nada, a gente dá o status not found, encontrou nada
você pode refatorizar isso aqui, extrair para funções auxiliares para melhorar as encodinhas
enfim, por essa aula é só, e até a próxima, tchau