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.