Faça APIs RESTful com o Gin Framework

Publicados: 2022-09-02

Você está ansioso para criar uma API REST com a ajuda do framework Gin? Então, você deve dar a este blog uma leitura completa. Através de passos simples, você aprenderá a criar uma API básica, após a qual poderá realizar outros projetos complexos. E sim, você pode resolver as coisas por conta própria sem recorrer aos serviços de desenvolvimento da Golang . Mas, antes de começar, conheça o aspecto teórico do framework Gin.

  1. Primeira tarefa a cumprir
  • Você precisa criar um diretório primeiro em seu go-workspace. Você usará o prompt de comando se estiver usando um computador Windows. Use o Terminal se você usa macOS ou Linux como seu sistema operacional.
  • Eu estarei empregando o Prompt de Comando neste cenário.

cd go-workspace

trabalho mkdir

trabalho de cd

código.

À medida que digitamos code ., vemos o lançamento do VS Code. No seu caso, pode ser um IDE ou editor diferente.

  1. Comece com o VS Code
  • A primeira coisa que faremos é criar um arquivo main.go. Depois disso, temos que baixar o framework gin para criar as APIs REST.
  • Agora temos que construir um arquivo go.mod. Digitamos:

vá mod init golang.com/job

  • Após a criação do arquivo go.mod, digitaremos:

acesse github.com/gin-gonic/gin

Isso fará com que o arquivo go.sum seja criado e todos os pacotes necessários relacionados ao framework gin sejam baixados.

  1. Vamos começar com uma API simples
  • Nós apenas escrevemos o código

pacote principal

importar (

"fmt"

“rede/http”

“github.com/gin-gonic/gin”

)

func main()

{s :=gin.Default()

s.GET (“”, func (c *gin.Context){

c.String(http.StatusOK, “Qual é a função?”)

})

s.Executar (“localhost: 8000”)

}

  • Como você pode ver, importamos todos os pacotes que o aplicativo requer. Seguimos então diretamente para a função main. O que estamos fazendo é construir um módulo padrão de middleware de recuperação ou logger para o Gin.
  • As configurações padrão estão incluídas na variável “s”. E usaremos essa variável para ajudar no desenvolvimento da API GET. O primeiro argumento que dei neste exemplo é o URL da API.
  • A URL base especificada por w.Run(“localhost:8000”) será usada para hospedar a API em localhost:8000. Além disso, o primeiro argumento na verdade indica a rota relativa da API.
  • A função do manipulador func (c *gin.Context) refere-se à sequência de funções que você pode fornecer.
  • O ponteiro para a variável *gin.Context serve como argumento da função. Portanto, o “c” neste caso significa contexto.
  • O contexto deve retornar um valor que seja c.String ou c.JSON. Aqui, há dois critérios em operação. O estado é indicado pelo primeiro argumento, um inteiro simples (http.StatusOK). Podemos usar isso porque importamos o pacote net/http.
  • Estou apenas enviando uma string de amostra depois disso. É "Qual é o papel do trabalho?"
  1. Vamos executar o programa acima

Para executar o programa, temos que digitar go run main.go.

  • Como você pode ver, há a presença de uma solicitação GET em uma URL em branco. Ele também vem com uma função personalizável. Além disso, a operação do modo de liberação do motor é visível. Há um único endpoint ativo no localhost 8000.
  • Em um navegador da Web, podemos digitar localhost:8000 para ver:
  • Enquanto isso, você verá o seguinte instantâneo no VS Code

O que isto significa? Bem, o framework gin está desempenhando um papel enorme aqui no monitoramento do tempo de resposta do código que é executado.

  1. Concentrando-se na API GET onde a passagem de parâmetro é tratada pela URL

O código a seguir pressupõe que a API fornecerá um valor, de preferência uma string, em resposta à URL.

s.GET(“/:get”, func (c *gin.Context){

var val = c.Param(“getr”)

c.JSON(http.StatusOK, gin.H{

“respostadados”:val,

})

})

//2ª seção

  • Podemos fornecer cada nome de variável na solicitação GET separando-os com dois pontos. Tudo o que for inserido após a URL básica será, portanto, considerado um “get”.
  • Para determinar o valor do “get”, devemos definir o contexto de Param e o nome da variável que mencionamos. Val receberá o 'get' do Gin e será informado do resultado.
  • Em seguida, vemos que estou transferindo um JSON que contém o valor.

Você está trabalhando em algo complexo? Então, seria a melhor ideia aproveitar os serviços de desenvolvimento da Golang, caso você se depare com um problema e não consiga corrigi-lo.

  1. Vamos executar o programa acima
  • Novamente, teremos que executar o programa digitando go run main.go.

Se você vir uma mensagem 'tcp 127.0.0.1: 8000: bind:Apenas um uso de cada endereço de soquete (protocolo/endereço de rede/porta) normalmente é permitido.', então você deve realizar uma operação no Prompt de Comando.

nestat -ano | findstr :8000

Verifique o valor de LISTENING (por exemplo 7932), então você deve digitar

taskkill / pid 7932 /F

Isso levará ao término do processo pid.

  • No navegador, realizamos o seguinte:

A razão pela qual tivemos que inserir uma string depois de informar localhost:8000 é porque a API espera uma string da URL.

  1. Tentando uma API POST
  • Tentaremos nos conectar a uma API POST aqui. Além disso, estamos cientes de que os dados estarão presentes no corpo. É quando a estrutura será útil.
  • Você se lembra desta seção?

pacote principal

importar (

"fmt"

“rede/http”

“github.com/gin-gonic/gin”

)

  • Em seguida, criaremos uma struct com dois campos de dados, como você pode ver:

tipo estrutura de trabalho {

Salário int `json:”salário” vinculação: “obrigatório”`

Cadeia de nomes `json:”name” vinculação: “required”`

}

  • O json:”salary” e o json:”name” representam as diferentes chaves. Você também pode ver que a associação foi especificada como “obrigatória”.
  • Após a //2ª seção, digitaremos:

s.POST(“/highlight”, func (c *gin.Context){

var data Job

if err := c.ShouldBind(&data); err!= nil{

fmt.Println (err)

c.JSON(http.StatusBadRequest, gin.H{

“erro”: fmt.Sprintf(“%v”, err),

})

} senão{

c.JSON(http.StatusOK, gin.H{

“dados”: dados,

})

}

})

  • Vejamos este bloco de código. No s.POST, vamos construir o objeto para o Job. O contexto “c” deve ser anexado ao modelo de dados depois disso. Se c.ShouldBind(&data) gerar um erro, ele alertará a API sobre o problema.
  • Fiz uma solicitação incorreta que demonstra o erro que foi observado em “error”:fmt.Sprintf(“%v”, err) em c.JSON(http.StatusBadRequest).
  • Se não houver problemas, a chave “data” será usada para transmitir os dados de volta para a resposta da API.
  1. Vamos executar o bloco final de código
  • Vamos agora examinar a fase final do programa. Devemos digitar go run main.go para fazer isso. Além disso, usarei o Postman para mostrar como a API funciona e como o código funciona. A versão desktop só precisa ser instalada.
  • Você pode ver que tenho dois campos de dados no corpo se observar a captura de tela abaixo. Raw e JSON devem ser as escolhas para o Body.
  • Ao clicar em 'Enviar', veremos o seguinte resultado:

{

"dados": {

“salário”: 23.000,

“nome”: “Robert Hall”

}

}

Você conseguiu entender o programa? Sim? Então, ótimo. No último caso, vemos três APIs em execução, aquela sem nada mencionado na URL, a que espera uma string e a última que espera valores no corpo. Espero que você possa enfrentar algumas tarefas desafiadoras da API REST agora.