E aí gente beleza mais um vídeo aqui sobre Gol a gente vai dar continuidade no nosso projeto e hoje a gente vai criar as nossas rotas das nossas aplicações a gente vai criar as rotas e os nossos primeiros controllers aqui vamos ver como que a gente pode importar o jinglene como que a gente pode utilizar criar nossa rota criar o controle assim por diante Beleza então vamos lá para o vídeo [Música] Então vamos lá que eu já trouxe alguns vídeos sobre jinglene que eu vou deixar o Card aqui em cima no mesmo vídeo eu gravei sobre o jinglene que o gol chi o halter defu do gol e assim por diante Gorilla mucks eu gravei um pouquinho sobre todos só que hoje a gente vai começar a utilizar o Gin no nosso projeto Beleza então não vai mudar muito desse vídeo para o vídeo que eu gravei nesse vídeo só vai fazer várias rotas beleza mas desse vídeo pra frente a gente vai entrar em assuntos mais legais assim do Jim Nos quais eu não entrei naquele vídeo Beleza então para você importar hoje em Going que é bem simples então entrando aqui em github. com/gingoniic/gin a gente vai estar aqui na na página principal do jinglene Beleza o ginkgoni que nada mais é do um Framework para roteamento para rest e assim por diante aqui no gol Beleza tem vários outros tem o Fiber gouchi tem Gorilla Mix tem o próprio halter do Gol tem vários Mas eu particularmente eu gosto bastante do Jim você pode utilizar o Golf Fiber ou outro que você preferir no seu projeto sem problemas beleza só que eu vou utilizar o Gin porque ele é bem prático e bem parecido com outras linguagens beleza por isso que eu vou utilizar ele aqui vamos clicar aqui em instalação e aí a gente vai instalar aqui o nosso jinglene Então você vai dar um Gol get - u ou menos o basicamente aqui é para você pegar a última versão então menos você pode colocar ao menos ver de ver bolsa se você quiser ponto com jinglene Que barrajin beleza então entra aqui no nosso projeto a gente vai entrar aqui no terminal beleza e a gente vai rodar o nosso comando então lembre-se de estar dentro do terminal você vai colar Colgate e ele vai baixar aqui o jingle pra gente então ele baixou aqui o jingle aqui pra gente tá vendo que ele deu é aqui em várias outras bibliotecas essas bibliotecas são praticamente são as subdependências do jingle tá então se você entrar Vai ter um monte de indirect aqui tá vendo um monte de coisa indirect então eu ensinei no vídeo sobre pacote se você ainda não viu o que que é indirect por que que aparece esses pacotes Beleza vou deixar aqui no cards também sobre isso mas basicamente indirect é basicamente quando é alguma dependência que é dependência de uma dependência sua basicamente tá é uma subdependência sua certo então a gente vai ter aqui o nosso Golden que a gente instalou naquele vídeo tá bom e a gente vai ter o jinglene que está aqui em cima no qual vai se tornar direta dependência direta daqui a pouquinho quando a gente começar a utilizar Então a gente vai entrar aqui no nosso src entrando nessa aí se a gente vai entrar em Controller e a gente vai criar o nosso primeiro arquivo de controle aqui dentro beleza só que antes a gente precisa criar as nossas rotas então a gente a gente vai criar a gente vai vir aqui dentro de controle a gente pode criar aqui um pacote roads Beleza então vamos criar aqui uma pasta roads então criando aqui dentro a gente vai entrar dentro dela e a gente vai criar aqui um roads. gou que a gente vai criar as nossas rotas nas nossas aplicações Beleza então a gente vai chamar o pacote de Roots certo então a gente vai chamar aqui de pack de Roots Beleza a gente vai tirar essa função aqui que foi criado automaticamente e vamos criar nossa primeira função aqui dentro aqui a gente vai criar uma função que vai inicializar as rotas para a gente então a gente vai dar um limite roads Beleza então esse Nitro roads que que ele vai receber por parâmetro a gente vai receber aqui um halter group vamos chamar de de R por exemplo que vai ser um ponteiro de jin.
hauter Beleza então a gente vai inicializar o haunter lá no nosso meio ponto gol e a gente vai passar o halter grupo Pro Elite roads para ele atrelar as rotas da nossa aplicação ao Rocker group que no caso vai ser o halter que a gente vai criar beleza pra gente não ter que inicializar a aplicação dentro do nitrops pra gente no início Roadstar só de rotas Beleza então dentro do nosso na hora que a gente dá um R ponto a gente vai poder ter renders n de Elite get head vai ter todas as funções que a gente tem os nossos status code assim por diante a gente vai ter tudo aqui dentro do halter grup Beleza então a gente vai criar inicialmente quatro rotas simples aqui a gente vai criar a nossa rota de get vai aí de certo então a gente vai ter usuário para pegar o usuário pelo nome a gente vai ter o get by e-mail a gente vai ter um insert o update e o de Elite a gente vai inicialmente vai ter cinco rotas aqui na nossa aplicação Beleza então vamos criar elas aqui para a gente ver como funciona tá então a gente vai dar um R Vamos criar primeiro o nosso get tá então a gente vai criar aqui um get vamos chamar de barra get Opa em minúsculo tá get e user bye id e a gente vai receber o ID do usuário aqui né então user aí gente vai receber quando você quer receber parâmetros você coloca dois pontos user aí na rota tá então você coloca o que você quer receber isso como uma variável e a gente vai entender assim tá no Java se eu não me engano você coloca assim é Chaves em volta né Beleza aí você geralmente faz isso aqui no gingoni que tem outros routers que fazem desse jeito tá mas o jinglene está com dois pontos na variável certo a gente vai criar nossa rota de gatinhos de Vamos criar as nossas cinco rotas aqui beleza a gente vai ter a nossa uma rota de get chozer by e-mail né então que é uma rota que a gente vai ter na nossa aplicação a gente vai receber aqui o user e-mail beleza e aí a gente vai ter aqui uma rota post né então a gente vai ter aqui uma rota rúsa tá e a gente vai ter um insertzer tá então a gente vai ter que o nosso incertilzer aqui o forma que você vai chamar as rotas pode ser da forma que você quiser tá é que eu tô chamando deixando mais descritivo possível o que a rota está fazendo beleza mas não precisa tanto tá geralmente o pessoal faz assim barra user aqui por exemplo para criar um usuário aí se a pessoa bate em barra e user com post ela cria se ela bate em barra user com Punch ela altera se ela bate em barra e usar com get ela pega um usuário Tá mas eu vou deixar o nome das rotas aqui mais descritivo possível para saber a gente saber o que que a gente está fazendo Está bom então a gente vai ter aqui uma rota tritty user Tá bom então a gente vai ter a rota creathos e que não vai receber nenhum parâmetro aqui dentro a gente vai ter também uma rota update user Então vamos chamar update user beleza que vai receber um useray dia aqui na rota também só que ela vai ser uma rota beleza e a gente vai ter também uma rota R ponto de Elite para a gente poder apagar um usuário tá então a gente vai ter aqui um barra de Elite user que também vai receber um usear aí de aqui por parâmetro beleza e aí você fala pô beleza tem um que todas as rotas Mas é só isso que eu tenho que fazer e ele já vai fazer o resto é obvio que não né mas a gente vai inicializar as nossas rotas E aí quando você entra aqui você inspeciona aqui o método né você vai ver além do relative PF que a gente tem que passar aqui no caso é o pé porque a gente acabou de passar a gente tem que passar renders mas está vendo que ele tem três pontinhos aqui eu vou deixar um card aqui em cima se você ainda não viu como que funciona essa questão do três pontos é Um fundamento do Gol Tá mas basicamente três pontos é você pode passar um ou n handles tá então você ou nenhum também né Você pode passar quantos render se você quiser mas para que que eu vou querer passar mais de um vamos supor que você tem um medidor Então a gente vai ter um Midway aqui no canal também vai criar no nosso projeto vamos supor que você quer ter um Midway que valida um token jwt se vale que valida se o token do cara está correto Então a gente vai ter um Midway que vai ser um handler por debaixo dos panda a gente só chama ele de midor porque vai intermediar a nossa requisição entre o nosso controle ele vai ficar ali no meio então ele vai seguindo uma ordem tá então se eu vim aqui criar uma função geralmente você tem que criar uma função que recebe um jin. comtex Beleza então posso criar aqui um context que vai fazer uma certa coisas assim como eu também posso criar um segundo context aqui então posso criar vários contas aqui dentro né então posso fechar mais em ponto com Texas e aqui dentro é fazer desse jeito tá vendo como ele não reclamou ou seja aqui nessa função eu posso validar o meu token já tá WT E aqui nessa função eu posso sei lá validar se o usuário tem alguma permissão seu usuário veio se arrota você vem de algum IP que eu quero permitir e eu queria mais uma para poder chamar de Controller assim por diante você pode criar conta se você quiser beleza só que pra não ter que criar o Controller aqui dentro a gente vai criar um Controller fora daqui né pra gente poder deixar organizado também que a nossa função Beleza então agora a gente vai voltar uma uma pasta aqui a gente vai estar dentro de Controller beleza e a gente vai criar uma outra pasta aqui dentro que a gente vai começar a criar realmente as nossas controlas tá bom então a gente vai criar aqui um find e user. gol Beleza então a gente vai salvar aqui esse arquivo a gente vai voltar vai criar mais um arquivo Create e user.
gou a gente vai salvar a gente vai entrar vai criar mais um arquivo aqui chamado de Elite e user. gou para a gente separar aqui o que cada arquivo faz beleza e por último o nosso arquivo update e user. goon Mas por que criar um de cada Por que que a gente não cria tudo em um arquivo só tá aqui a gente poderia criar até pastas diferentes tá que a gente poderia criar uma pasta para creamhouse uma pasta pra delitzer uma pasta para Finder uma pasta para update tá mas aqui eu tô criando em arquivos separado porque se eu quiser criar várias coisas por exemplo eu quiser eu queria um cliente de forma diferente eu quiser criar um deleite de formas diferentes eu posso utilizar um arquivo só que se eu misturar os métodos que deletam o usuário de um método que cria um usuário você entende que são contextos diferentes então a gente cria arquivos diferentes para ficar mais organizado Beleza se começar a criar muito começar a ter muito código muita coisa a gente cria uma pasta para cada contexto beleza mas inicialmente a gente pode criar só arquivo na mesma pasta então aqui a gente tem os nossos controllers né então dentro de cada Controller a gente vai criar as nossas funções Então a gente vai vir aqui vai tirar esse cara né então não é pacote Man é pacote Controller beleza e a gente vai criar as nossas funções aqui ele vai começar a dar erro porque ele não tá com um pacote Controller em todos então aqui só alterar pra controlar no de vocês não vai estar nada é só vocês escreverem que é pacote Controller Beleza então ele parou de dar erro aqui porque eu realizei todos pra controlar agora vocês vão criar uma função que vai se chamar aqui por exemplo no finge user dentro do arquivo Finger a gente vai criar duas dois controles no caso né então find e user bye aí que vai receber o quê Lembra que eu falei que ia ser um Então a gente vai receber C ponteiro de gin Ponto context beleza e ele não vai retornar nada então a gente vai criar uma segunda função que vai se chamar e-mail aqui dentro então a gente vai ter as nossas duas funções aqui dentro que que é esse de conta que se encontra aqui de baixo basicamente assim pegou uma requisição quando chegar uma requisição ele vai te dar um gincontex dentro dos encontros basicamente você vai ter todas as informações tá então se você vem aqui dentro você dá um c ponto você vai ter um c.
ure Quest que tem tudo sobre a raquest o body canson Close o header da requisição Qual é o método que foi utilizado tudo request o r e tudo tudo que você precisar vai estar aqui dentro então contact é como o nome já diz o contexto da requisição Qual é o contexto da minha requisição e vai estar dentro desse cara beleza dentro de Create user a gente vai basicamente criar uma função incert ou Crate usa né Vamos banalizar Crate user que vai receber um ponteiro de jim.