Video Transcript
Então vamos continuar e fazer o método para excluir o livro.
Vamos lá.
Então quando bater nessa rota aqui, barra livros, barra o id do livro,
se for get vai bater lá no buscador do livro.
O que está escrito agora vai ser qualquer método.
Se lembra do ar.method, pode ser get, pode ser post, pode ser put,
que é o que a gente vai fazer agora e pode ser o delete, quer dizer,
a gente vai fazer o delete, não o put, put depois.
Então a gente vai ter que checar aqui o método para poder saber
se nós vamos buscar ou se vamos excluir.
Então vamos aqui, se o método da requisição se for get,
nós vamos buscar o livro.
Else, se o r.method for delete,
é o que a gente vai fazer agora.
Vou chamar a função excluir livro que a gente vai fazer,
vamos passar o wr como argumentos aqui.
Então vamos definir excluir livro aqui.
Pode ser qualquer conta aqui, por exemplo.
Vamos aqui em cima, antes de rotiar, vou decorar a função,
excluir livro, será que eu pus um singular?
Certo? Aquela mesma coisa, primeiro parâmetro LW,
que é do tipo response writer, http.response writer.
E o segundo parâmetro é o r da requisição ponteiro para o http.request.
Pronto.
Ok, vamos excluir o livro primeiramente.
Então a maneira que o usuário vai fazer o seguinte,
vai fazer uma requisição, por exemplo,
barra livros, barra 123 para dar tal livro,
cujo id é 123.
Primeiro a gente tem que extrair esse id da rota.
Da mesma maneira que a gente fez anteriormente no buscar livro.
Você lembra?
Buscar a livra aqui.
A gente quebrou o r.rl.path na barra para poder obter o id,
que é o partis elemento lá com índice 2,
que é o terceiro elemento, conta do 0, 012.
Então aquela mesma coisa que você quiser copiar aqui.
Note que até essas coisas aparecem.
A mesma coisa como essas,
se você pode pensar em uma maneira de reutilizar o código,
talvez passar argumento do partis aqui,
como a gente já está pegando o partis e essas coisas.
Ou até o id, que a gente sabe que partis 2 é o id.
Está certo?
Então vou deixar aqui.
Se quiser,
talvez eu coloquei o id para buscar livro,
excluir livro.
Uma sugestão.
Pode ser que você ache o seu sol, se não, melhor.
Enfim, vamos continuar.
Vamos no excluir livro.
Vamos lá extrair partis.
rrl.path, nós vamos dar o split na barra.
Isso vem dos strings, ponto.
Depois disso, o id,
o livro vai ser excluído,
vai ser partis sobre 2.
A condição é que a gente tenha algo já no path.
Por isso, isso sempre vai funcionar devido ao if aqui.
Lembra?
O if tem a condição,
a gente sempre vai saber que partis no índice 2 vai ser definido.
Com isso, extraímos o id.
Para excluir um livro, primeiro, a gente tem que saber
será que esse livro existe?
Se o livro não existe,
nós vamos dar o status 404, não encontrado.
Mas se existe, nós vamos lá e atualizar
a lista de livros e excluir o livro,
cujo id a gente passou,
e a resposta não precisa ter nada.
Pode usar o no content,
o status 201, se não me engano.
Vamos lá.
Vamos fazer o seguinte, vamos fazer um loop no livro.
Lembra do livro aqui?
A variável de livros é que tem os livros.
Por exemplo, se eu quisesse deletar o livro 2,
teria que fazer um loop nessa variável
para ver achou 2.
Eita, achou 2, então vou excluir da variável.
Se passar por toda a lista, não achar nenhum,
vamos dar o 404.
Vamos lá.
Vamos ver aqui.
Vamos dar um for, índice,
livro range,
livros, então dá um loop,
pego o livro, faz um range,
tem as duas variáveis para o índice e para o livro,
para cada interação, repetição.
Se o livro da repetição, o id,
foi igual ao id que foi passado,
é o que a gente achou.
Vamos fazer o seguinte,
vamos dizer que o índice do livro que achou,
eu vou fazer uma variável aqui, índice do livro,
vou fazer essa variável aqui,
índice do livro,
começa a dar de menos um,
para dizer que não achou ainda,
e quando achar o índice,
você seta o índice do livro,
por exemplo, é o índice aqui,
e pode até quebrar o loop,
dizer, break,
e achou, se não, no final,
o índice do livro vai ser menos um,
o que significa não achou.
Então, se o índice do livro,
o menor que zero, estude,
menos um, por exemplo,
significa não achou, a gente vai retornar o 404,
o livro não é encontrado,
por exemplo, o W,
se lembra como é que passa o status code,
write header,
e qual é o número,
404, mas pode usar a constante,
http.stats, not found.
E dá o return aqui para não fazer mais nada,
depois desse if.
Se não, significa que o índice do livro
é maior ou igual a zero,
isto é, achou o índice do livro,
lá na lista dos livros.
Neste caso, a gente tem que atualizar
a lista de livros para poder escolher
aquele livro no índice aqui,
índice do livro.
De várias maneiras de fazer isso,
uma maneira, por exemplo,
se eu quiser pegar,
deixa eu te mostrar aqui,
se eu tiver livros A, B e C dentro de uma lista,
por exemplo,
e D,
para poder remover o B,
você pode pensar assim,
vamos pegar a primeira parte,
a esquerda de B, que é
essa lista,
e vamos
concatenar,
isto é, combinar com
a lista
à direita do B, que é o C e o D,
isto vai formar o quê?
O A, C, D
isso é uma maneira de pensar nisso.
Então, vamos aqui,
nós podemos pegar essa,
como é que pega a lista A,
livros é a lista,
você vai pegar
do primeiro índice que é zero,
até
15, o índice do livro,
não é?
A parte que o índice do livro não é incluído
nessa nova
lista de coisas.
Então, vai pegar tudo
à esquerda,
o elemento cujo índice é o índice do livro.
Isso vai dar
essa parte aqui, mas como é que pega
do lado direito? Você vai falar
livros, bem, começa
do índice do livro,
mais um,
até
o final,
o final vai ser o link
do livro.
O nótice não é incluído, então,
vai estar tudo certo.
Então, temos as duas partes, a esquerda
e a direita do índice do
elemento aqui do livro.
Então, nós podemos pensar, vamos pegar essa lista
com o cantonar com a outra.
Uma maneira de fazer isso é assim,
você pega o apende, bem,
apende para essa lista aqui,
as outras coisas.
Por exemplo, se tivesse
c, d,
é esse por diante.
O problema aqui é como é que converte
vários argumentos
de uma array, de uma lista aqui.
Você pode usar
um ponto, ponto, ponto aqui.
Pega esse aqui
e ponha aqui.
Tá meio confuso?
Vamos fazer assim.
Lá do esquerdo
e vou botar
essa variável aqui.
Lá do esquerdo
para ficar melhor de ler.
Entender.
Lá do direito.
Lá do direito.
Tá.
Então, esse aqui
vai gerar uma
uma fatia
lista de
uns elementos.
Se tivesse esse exemplo de a, b, c, d,
seria e o elemento
o índice seria 1, por exemplo,
b, ele ia pegar o a,
botar em lá do esquerdo,
ia pegar o c e o d,
seria o lado direito
e formaria uma nova
lista com a, c e o d.
E essa nova lista nós vamos
atualizar, né?
Reatribuir o valor
a, aos livros.
Certo?
E finalmente
você dá o
W write header com
o 201
que eu acho que é
201, que eu
o status no content
sem conteúdo, que não retorna
nada, quando você exclui
alguma coisa em rest.
Vamos ver se isso funciona
e depois vamos recapitular o que a gente
fez. Eu vou devolver um terminal
go around
em botogorre, compiler e a
executa o servidor
deu um erro aqui
int string
esqueci de converter
o id
para
um int, como é
que converte um
string para o int
com strconve.
strconve
ponto que atoie
a2i
partes
será que esqueci de alguma coisa?
atoie
vamos ver lá
no outro buscar livro, tá certo?
strconve
ah, tem um erro, né?
tem isso também
erro
se der o erro alguma coisa
deu pause
se erro
não for nil, a gente vai ter que
fazer alguma coisa
se tornar um erro
talvez o erro seja na parte
do
a parte
talvez o pessoal
passou um id que não é inválido
que não é um int
essas coisas sim
então você pode fazer um erro aí
w
write header
http
aí o negócio que fica, qual será
o código que a gente passa?
o erro
ou 500
depende
do erro
então vou botar só
sei lá, bad request
mas você pode mudar
se você acha que esse não tá certo
e se der o erro
é dar o bad request e retorna
vamos testar isso agora
vou lá no postman
vamos pegar a lista de livros
primeiro vou tirar o
barra 2
só no barra livros tem um, dois, três
certo?
quero
vou montar a tela aqui pra você ver
mas, adeus
negócio
bom então
vamos testar
o delete
vou mudar o verbo pra delete
vou deletar o livro 2
no barra 2
noto que a obteve
204 no content
sem conteúdo
vou pra nova, nova aba aqui
e vou botar get
livros
barra livros
a gente espera que
o livro
cujo IDE é 2
que não esteja mais na lista
e realmente não está
bem, agora eu quero também testar
aquele bad request
por exemplo, se eu botasse
letras em vez de inteiros
deu 400 bad request
ah
ou
agora vou testar
coisa que não existe
um, dois, três, não existe esse livro
deu 404
não encontrado
tá
vamos deletar tudo agora
vou deletar o livro 1
vou deletar o livro 3
agora não tem mais nada
vou tentar deletar o 3 de novo
404 não encontrado
tá bom então, vamos revisar o que a gente fez
adicionamos aqui uma nova
novo endpoint
delete, barra livros, barra o IDE do livro
primeiro a gente extrai o IDE
e converte de string para int
se der algum erro na conversão do IDE
a gente manda bad request
de volta pro usuário
e torna sem fazer mais nada
se não a gente faz um loop
na lista de livros
vamos supor que a gente
não encontrou o livro ainda
menos um significa que o livro
não foi encontrado
essa variável armazena o índice
do livro na lista
se você achar um livro cujo IDE
foi fornecido
a gente atribui
a gente manda o índice
na lista essa variável índice do livro
para poder depois
fazer a exclusão
se não encontrou
o livro, isto é, o índice
fora menos um
a gente manda lá
no HTTP status não encontrado
se não o livro foi encontrado
nós continuamos no código
vamos atualizar
a lista e excluir
o livro
cujo IDE foi passado pela rota
paramos de rota
a gente vai
de várias maneiras fazer isso
uma maneira que eu fiz aqui usando a pen
eu criei duas
listas novas
vou fatir aqui e combinei
em uma só
pensando da maneira
eu pego a lista de lado esquerdo
e eu doo a tend
eu adiciono essa lista
várias coisas
eu usei esses três pontos
para poder converter
dessa lista
para argumentos separados
por uma vírgula
e finalmente
retorno HTTP status
no counter para 201
para dizer que não tem conteúdo na resposta
de exclusão
tá bom? pressa o like
até a próxima