Um momento
Aula 06
Cursos / Como Criar uma API JSON em Golang - CRUD Simples
Como Identificar o Verbo da Requisição HTTP em Golang

Nesta aula aprendemos a identificar o verbo da requisição de HTTP que foi usado para requerir a rota.

Tradicionalmente, há dois verbos: o GET e o POST.

Para seguir a maneira REST, a rota para listar todos os livros deve ser definida com o verbo GET em vez do verbo POST. A rota POST /livros, na verdade, será usada mais tarde para o cadastro de livros.

Para facilitar o desenvolvimento de nossa API, a aula usa o Postman. Esse é um programa que contém uma interface de usuário para fazer requisições de HTTP.

Para evitar que o nosso servidor diferencie a rota POST /livros da rota GET /livros, temos que verificar que método de HTTP foi usado na requisição. Isso é possível através do parâmetro r, do tipo *http.Request. Basta checar que sua propriedade Method não tem valor "GET".

Summary

Resumo da Aula de Golang

Olá pessoal, estamos de volta com mais uma aula de Golang, onde continuamos a implementação da nossa API que retorna dados em formato JSON.

Tópicos abordados:

  • Revisão do CRUD: Já implementamos a parte da leitura (Read) e agora passaremos para a parte de criação (Create).
  • Nova Rota para Cadastrar Livros:
    • Será criada uma nova rota (/Livros) para permitir o cadastro de um novo livro.
    • Utilizaremos a função HTTP.HandleFunc para lidar com essa nova rota.

Detalhes da Implementação:

  • Métodos HTTP:
    • A rota para listar livros utiliza o método GET. No entanto, se você fizer um pedido POST para a mesma rota sem especificar o método, o servidor responderá como se fosse um GET.
  • Teste com Postman:
    • O instrutor utilizará o Postman para demonstrar como enviar requisições HTTP. O Postman pode ser baixado do site oficial getpostman.com.

Passos para Teste:

  1. Inicie o servidor com go run main.go na porta 337.
  2. Realize uma requisição GET para http://localhost:337/Livros e observe que três livros são retornados como esperado.
  3. Faça um teste com uma requisição POST para a mesma URL e verifique que o servidor ainda responde como se fosse uma requisição GET, já que não foi especificado o método.

Manipulação de Métodos

  • Para diferenciar entre métodos GET e POST:
    • O instrutor sugere verificar a variável R, que contém informações sobre a requisição. Se R.method não for GET, podemos retornar e não efetuar nenhuma ação.

Conclusão

  • Através dessa aula, aprendemos sobre a criação de rotas em nossa API e como manipular os métodos HTTP para responder adequadamente a requisições diferentes.

Essa abordagem ajudará a atualizar nossas funcionalidades na criação de novos registros, como o cadastro de livros, fortalecendo a construção da nossa API.

Video Transcript

Olá pessoal, estamos de volta com mais uma aula de Golang. Vamos continuar a implementação da nossa API e retorno a JSON. Nós fizemos já a parte da leitura do CRUD. Agora vamos fazer a parte C, que é Create. Então eu gostaria de fazer o seguinte, vamos fazer uma rota para cadastrar um livro. Nós temos a rota aqui para listar os livros, mas que tal nós criarmos uma, para a gente fazer uma requisição ou pedido para criar um novo livro. Então vamos lá. Então aqui no configurar rotas vou adicionar a nova rota. HTTP.handlefunk, para nós lidarmos. A rota vai ser no barra Livros. E eu vou chamar a função de cadastrar livro no singular. Então vamos ao cenote que temos a mesma rota e como é que ele vai diferenciar? Bem, antes de pular para a implementação vamos pensar. Para o listar livros esse é o pedido get pela convenção rest. Mas note que a gente não tem nem o sinal aqui dizendo que o método vai ser get. Na verdade se você fizer até o método que fosse post e eu bater nessa rota aqui é ver. Vamos testar. Eu vou comentar o que a gente estava fazendo e ver se eu fizer um pedido em vez de get mais post para a barra Livros. Será que vai chamar o listar livros? Vamos ver. Para poder demonstrar isso eu vou usar o postman que é um programa para poder fazer pedidos de HTTP. Você também pode usar a linha de comando como o curl e outras coisas. Você pode usar o que você quiser mas eu vou usar o postman para esse exemplo. Tem aqui o site do postman, o navegador getpostman.com. Você pode ir aqui e baixar o aplicativo. Esse postman era uma extensão do navegador mas agora é o próprio programa aplicativo. Aqui eu vou abrir o postman e você pode mudar o verbo do pedido de HTTP em vez de get e vou por post e você pode pôr a URL HTTP localhost 337 barra Livros. Vamos ver aqui. Eu vou rodar o servidor aqui que eu não estou rodando. Go, Run, Main, Portugou. Rodando na porta 337. Vamos primeiro dar o get. Get, Send, tem três livros como a gente já esperava. Agora vamos dar o verbo para post que será que vai acontecer. Olha só. Olha só. Até fazendo o pedido post ele foi bater lá na rota barra Livros que deve ser só para pedir o get. Se você não especificar que método vai ser ele vai responder batendo no listado Livros para qualquer verbo de HTTP. Agora uma maneira de você checar qual verbo que é pode ser assim lá no listado Livros você tem esse R aqui que é a variável que contém informações sobre a requisição ou o pedido de HTTP. Você poderia checar essa maneira aqui e se o R ponto method não for get você pode retornar e não fazer nada. Dessa maneira aqui. Tá? Então vamos testar isso. Mata o servidor com Ctrl C e convive ele e roda ele novamente. Eu posto o mail e vou dar o post agora de novo. Note que não veio nada. Nesse caso aqui deu 200 OK mas não veio nada. Tá? O que? Eu cheguei se o método não era get verdadeiro. Dá o return na mesma hora sem fazer nada e a resposta foi em branco. Tá? E você quiser saber mais sobre esse método aqui no navegador eu vou lá no site do gollang.org clica em packages, pacotes e você escolhe a HTTP lá na lista que tem a referência aqui. Você pode olhar o que é que tem dentro do método do R. O R é request, tipo request. Então vai aqui type, type request com R. Então arrasta lá pro R, esse aqui e você vê que é uma estrutura e tem esse método aqui dizendo que específica o método HTTP, get, post, put, etc. Não sei o que, não sei o que. Tá? Fazendo com a string.basia significa get pra requisições de cliente. Tá bom? Então essa é a maneira mas eu não vou fazer assim. Você pode fazer também de outra maneira aqui.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: