Aula 24
Redefinição de Mais Rotas com o gorilla mux
Nesta aula continuamos a modifição das funções para usar o gorilla/mux
.
Summary
Resumo da Aula sobre Rotas com GorillaMux
Na aula, o instrutor finalizou a definição das rotas utilizando o GorillaMux. Os principais pontos abordados foram:
Operações Implementadas
-
Listar Livros
-
Buscar Livros
-
Cadastrar Livros
- Rota:
POST /livros
- Content-Type:
application/json
- Retorno: status 201 (Created) com dados do livro cadastrado.
- Rota:
-
Modificar Livro
- Rota:
PUT /livros/{id}
- Extração do ID da rota usando
mux.Vars
. - Retorno: JSON com os dados do livro modificado.
- Rota:
-
Excluir Livro
- Rota:
DELETE /livros/{id}
- Verificação da presença do ID e remoção correspondente da lista.
- Retorno: status 204 (No Content) ou 200 (OK) se a operação for bem-sucedida.
- Rota:
Considerações Importantes
- Para manipular as variáveis de rota, é necessário usar
mux.Vars
para extrair os parâmetros. - Os IDs devem ser convertidos de string para inteiro utilizando
strconv.Atoi
. - O Content-Type deve ser sempre configurado para
application/json
. - Se o servidor for reiniciado, os dados estão perdidos, pois não há persistência.
Conclusão
O instrutor revisou as configurações de rotas, enfatizando a importância de evitar conflitos e a correta configuração do Content-Type em respostas. A aula foi encerrada com a expectativa de continuar em futuras sessões.
Video Transcript
Fala pessoal, nesta aula vamos terminar a nossa rep definição das rotas com GorillaMux. Vamos lá.
Vamos aqui, já fizemos o listar livros, buscar livros, que tal a gente fazer bem...
Listar, buscar, vamos fazer o cadastrar.
O tirador, Handle Funk.
Tem, o cadastrar vai ser no barra livros, mas tem o método o quê?
Método posto, certo? Método posto, barra livros.
Agora vai chamar o cadastrar-livo. Vamos lá para cadastrar agora.
Bem, no cadastrar legal, se lembra que a resposta é J, então precisamos setar o content type
application de Json. Aqui em cima, W.header.add.contenttype.application.json.tudo.set.
Ele vai setar o código ATV para 201 created, certo?
Valeu o corpo. Não tem rota de parâmetro, então não tem muito aqui para mudar.
Vamos testar. Lá para o postman. Deixa o primeiro dar o get de todos os livros.
1, 2, 3, agora vai dar o post. Eu tenho o meu body.
Rod Json, título e autor. Vou dar o send. Aqui embaixo é minha resposta.
ID4, novo livro, alguém ABC, autor. O header, tá aplicado de Json corretamente.
Vamos dar o get de novo para ver se está lá mesmo. Pareceu aqui como quarto.
Elemento dessa array. Tudo certo, então.
Isso foi rápido, não é? Vamos fazer os outros. Vamos fazer o de modificar o livro.
Vamos voltar lá para configurar rotas. Vamos lá, como é roteado, ponto, handle, funk.
Para modificar o livro, precisamos barra o ID do livro.
Então vai ser chave, livro, ID. Vou chamar a mesma aqui de cima.
A tomam cuidado para dar conflito. Temos que sempre pensar nisso.
Será que vai dar conflito na hora das rotas? Nesses casos aqui, qual vai ser o método?
O método vai ser o... O que a gente tinha antes? PUT?
Vamos ver aqui em cima. Era o PUT mesmo, para modificar o livro.
Minha 159. 158, 159. Então vamos aqui.
Método PUT, qual vai ser a função de modificar o livro como segundo argumento para o handle, funk?
Agora vamos lá fazer aquela mesma coisa que a gente fez na busca-livro, que é extrair esse ID do livro da rota.
Vamos lá em cima. Cadê modificar o livro?
Então tinham partes e tinha o ID erro e tal. Agora o partes vai virar o quê?
Bem, esse parte aqui vai virar o quê? VARS. Primeiro a gente faz o seguinte.
Vai lá no moocs.vars, passa o R da redução.
Com esse a gente põe na variável VARS, dois pontos igual.
Depois disso aqui, em vez de partes que vai conter o ID, a gente fala VARS,
o gente e o livro ID, que é o nome da variável de rota.
Com isso não precisa mais de partes, vou remover.
Ele converte esse string aqui para inteiro, com STR com potatoi.
Está no ID aqui. Legal. Corpo, e tal, e tal, e tal, e tal.
No final, ele dá retorno JSAAM.
Como a gente vai retornar JSAAM, vamos lá definir o nosso content type lá em cima.
W header.add o quê? content, traço, type, vírgula, application, barra, etc.
Vamos testar. Já tem um put aqui no possumen.
O bar é esse, vou modificar o livro com o ID 2, novo livro é o mesmo.
Headers, content type com o que já são aqui.
Send, lá embaixo tem as postas, não foi encontrado.
O que aconteceu? Não tem nenhum erro no terminal.
Eu disse que eu vou ter 2x2x2 pelo ID.
O ID tem que ser na rota.
Mudar, retornou novo, livro é o mesmo.
Vamos testar no get, barra, livros, realmente mudou o segundo mesmo.
Mudou, novo, livro é o mesmo.
Tudo certo. Note que o elemento 4 não aparece mais porque o servidor foi reiniciado
quando a gente fez a mudança e aquelas partias de livros é sempre na memória.
Eu disse que já desapareceu, mas mudou o segundo mesmo.
Volta aqui, tudo certo, parece tudo certo.
Modificar ali, vamos fazer o disquio.
Preparado, vamos lá. Aqui embaixo, o tia.do.handlefunc, o que?
Quando vai excluir precisa do ID também. Barra, livros, barra, livre, ID.
Mais um método é o que?
.methods, delete.
Qual vai ser a função? Exculir, livro aqui, o segundo recomendo do Handlefunc.
Vamos lá para o script, livre, extraiu o parâmetro de novo.
Antes de tudo, vamos setar o application como content type.
W.que? Você já está cansado de fazer isso, né?
W.header.add.
Que é o string aqui?
C.content.trusttype.
Segundo argumento, qual é o valor? Application, traba, rejeição.
Pronto, agora vamos lá no ID. O ID vai ser o que? Não é mais par?
Primeiro, vamos fazer o que?
Mox.vars, chama essa função com R da requisição request,
esse ponteiro para a requisição, põe no variável,
e fala vars, livre.id, que é o que eu defini lá na hot.
Peguei, esse vai ser o valor, o formato string, tipo string,
e vou converter para a gente com a toy do str.
Não precisa mais de partes, tchau.
Com isso, vamos ver se deu certo, tem E, não sei o que, write.header.
Vai procurar o ID já está inteiro, tudo certo, não encontrado.
Esse aqui para poder remover da fátia da array,
para ela se gerir certo, write.header.
Vamos testar, postman, eu já tenho aqui o,
manda o get, tem um, dois, três,
vou lá no meu, nem a aba para deletar, livre três.
Mandar, 204, não conta, correto, header, JSON,
certo, embora que a gente não tenha,
ah, nenhuma resposta, mas JSON mesmo.
Vamos ver lá no, de volta para o get, barra livre,
se para vezes remover o terceiro, remover, tá?
Vamos ver, dois, vou botar uma barra aqui só de ver se funciona.
Delet, 200, ok?
Isso não está certo, será?
O que aconteceu aqui?
Então deu problema, você botei a barra no,
no barra, no dois eu vei.
Certo, então um detalhe bem pequeno, se você tem uma barra aqui,
então deixe aí como mais vezes para você pesquisar como,
vezes eu vei se você quiser, tá?
É só eu não tenho a barra, mas curiosidade aí.
Tá, então voltando aqui o editor de texto,
vamos, Revis, algo que a gente fez.
Nós redefinimos a rota para cadastrar um livro,
modificar, excluir, para cadastrar vai no barra Livros,
método Post, método Post, isso aqui é do GorillaMux.
A barra roteador para modificar precisa do ID na rota lá,
com as chaves, tá?
GorillaMux e o nome da variável que você quer,
eu disse livre ID, método Put.
Então a gente excluir método delete,
barra Livros, barra livre ID entre chaves.
Para poder acessar essas variáveis da rota,
é só usar o mux.var,
passa o r que é o ponteiro para HTTP,
HTTP request.
Depois, quando você pegar is, ele vai retornar um hash,
que você pode aparenciar com colchete
e o nome da variável vai te dar o valor.
Note que o valor é tipo string, ele não converte para você.
Então você tem que pegar esse string,
como a nossa ideia do tipo inteiro,
pegar string, converte para inteiro,
com o sdr.com.atoi.
E o resto é só,
mesma coisa, né?
Exceto que a gente adiciona toda vez em cada função,
o w.her.er, né?
Antes a gente usava o set, eu voltei o er para você,
para poder adicionar,
em vez de seta content type,
aplicação de direção.
Tá, então, por essa aula é só,
e até a próxima. Tchau!
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: