Faça APIs RESTful com o Gin Framework
Publicados: 2022-09-02Você 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.
- 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.
- 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.
- 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?"
- 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.
- 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.
- 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.
- 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.
- 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.