Cree API RESTful con Gin Framework

Publicado: 2022-09-02

¿Está deseando crear una API REST con la ayuda del marco Gin? Entonces, deberías darle a este blog una lectura completa. A través de sencillos pasos, aprenderá a crear una API básica, a partir de la cual podrá emprender otros proyectos complejos. Y sí, puede resolver las cosas por su cuenta sin utilizar los servicios de desarrollo de Golang . Pero, antes de comenzar, familiarícese con el aspecto teórico del marco Gin.

  1. Primera tarea a realizar
  • Primero debe crear un directorio en su espacio de trabajo. Usarás el símbolo del sistema si estás usando una computadora con Windows. Use la Terminal si usa macOS o Linux como su sistema operativo.
  • Usaré el símbolo del sistema en este escenario.

cd go-espacio de trabajo

trabajo mkdir

trabajo de discos compactos

código

A medida que escribimos el código, podemos ver los lanzamientos de VS Code. En su caso, podría ser un IDE o editor diferente.

  1. Comience con el Código VS
  • Lo primero que haremos será crear un archivo main.go. Después de esto, tenemos que descargar el framework gin para crear las API REST.
  • Ahora tenemos que crear un archivo go.mod. Tecleamos:

ir mod init golang.com/job

  • Después de la creación del archivo go.mod, escribiremos:

ve a github.com/gin-gonic/gin

Esto hará que se cree el archivo go.sum y que se descarguen todos los paquetes necesarios relacionados con el marco gin.

  1. Comencemos con una API SIMPLE
  • Solo escribimos el código.

paquete principal

importar (

"fmt"

“red/http”

"github.com/gin-gonic/ginebra"

)

función principal()

{s:=gin.Predeterminado()

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

c.String(http.StatusOK, "¿Cuál es el puesto de trabajo?")

})

s.Run ("localhost: 8000")

}

  • Como puede ver, hemos importado todos los paquetes que requiere la aplicación. Luego procedemos directamente a la función main. Lo que estamos haciendo es construir un módulo predeterminado de middleware de recuperación o registrador para Gin.
  • La configuración predeterminada se incluye en la variable "s". Y usaremos esta variable para ayudar en el desarrollo de la API GET. El primer argumento que he dado en este ejemplo es la URL de la API.
  • La URL base especificada por w.Run(“localhost:8000”) se usará para alojar la API en localhost:8000. Además, el primer argumento en realidad indica la ruta relativa de la API.
  • La función del controlador func (c *gin.Context) se refiere a la secuencia de funciones que puede proporcionar.
  • El puntero a la variable *gin.Context sirve como argumento de la función. Por lo tanto, la "c" en este caso significa contexto.
  • El contexto debe devolver un valor que sea c.String o c.JSON. Aquí, hay dos criterios en operación. El estado se indica mediante el primer argumento, un número entero sencillo (http.StatusOK). Podemos usar esto porque importamos el paquete net/http.
  • Simplemente estoy enviando una cadena de muestra después de esto. Es "¿Cuál es el puesto de trabajo?"
  1. Ejecutemos el programa anterior

Para ejecutar el programa, tenemos que escribir go run main.go.

  • Como puede ver, existe la presencia de una solicitud GET en una URL en blanco. También viene con una función personalizable. Además, el funcionamiento del modo de liberación del motor es visible. Hay un solo punto final activo en localhost 8000.
  • En un navegador web, podemos escribir localhost:8000 para ver:
  • Mientras tanto, podrá ver la siguiente instantánea en VS Code

¿Qué significa esto? Bueno, el framework gin está jugando un papel importante aquí en el monitoreo del tiempo de respuesta del código que se ejecuta.

  1. Concentrándose en GET API donde la URL maneja el paso de parámetros

El código que sigue asume que la API le proporcionará un valor, idealmente una cadena, en respuesta a la URL.

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

var val = c.Param(“getr”)

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

"datos de respuesta": val,

})

})

//segunda sección

  • Podemos proporcionar cada nombre de variable en la solicitud GET separándolos con dos puntos. Por lo tanto, todo lo ingresado después de la URL básica se considerará un "obtener".
  • Para determinar el valor del “get”, debemos definir el contexto de Param y el nombre de la variable que hemos mencionado. Val recibirá el 'get' de Gin y será informado del resultado.
  • A continuación, vemos que estoy transfiriendo un JSON que contiene el valor.

¿Estás trabajando en algo complejo? Entonces sería la mejor idea aprovechar los servicios de desarrollo de Golang en caso de que encuentre un problema y no pueda solucionarlo.

  1. Ejecutemos el programa de arriba
  • De nuevo, tendremos que ejecutar el programa escribiendo go run main.go.

Si ve un mensaje 'tcp 127.0.0.1: 8000: enlace: normalmente solo se permite un uso de cada dirección de socket (protocolo/dirección de red/puerto)', entonces debe realizar una operación en el símbolo del sistema.

nestat -ano | búsqueda: 8000

Verifique el valor de ESCUCHAR (por ejemplo, 7932), luego debe escribir

taskkill / pid 7932 /F

Esto conducirá a la terminación del proceso pid.

  • En el navegador realizamos lo siguiente:

La razón por la que tuvimos que ingresar una cadena después de indicar localhost:8000 es porque la API espera una cadena de la URL.

  1. Probando una API POST
  • Intentaremos conectarnos a una API POST aquí. Además, somos conscientes de que los datos estarán presentes en el cuerpo. Aquí es cuando la estructura será útil.
  • ¿Recuerdas esta sección?

paquete principal

importar (

"fmt"

“red/http”

"github.com/gin-gonic/ginebra"

)

  • A continuación, crearemos una estructura con dos campos de datos, como puede ver:

tipo de estructura de trabajo {

Salario int `json:”salario” enlace: “requerido”`

Cadena de nombre `json:”nombre” enlace: “requerido”`

}

  • El json:”salary” y json:”name” representan las diferentes claves. También puede ver que el enlace se ha especificado como "requerido".
  • A continuación de la //segunda sección, escribiremos:

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

trabajo de datos var

si err := c.ShouldBind(&data); err != nulo{

fmt.Println (err)

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

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

})

} más{

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

“datos” : datos,

})

}

})

  • Veamos este bloque de código. En el s.POST, construiremos el objeto para el Trabajo. El contexto "c" debe adjuntarse al modelo de datos después de eso. Si c.ShouldBind(&data) arroja un error, alertará a la API del problema.
  • Hice una solicitud incorrecta que demuestra el error que se observó en "error":fmt.Sprintf("%v", err) en c.JSON(http.StatusBadRequest).
  • Si no hay problemas, la clave de "datos" se utilizará para transmitir los datos a la respuesta de la API.
  1. Ejecutemos el último bloque de código
  • Examinemos ahora la etapa final del programa. Debemos escribir go run main.go para hacer esto. Además, usaré Postman para mostrar cómo funciona la API y cómo funciona el código. La versión de escritorio solo necesita ser instalada.
  • Puede ver que tengo dos campos de datos en el cuerpo si observa la captura de pantalla a continuación. Raw y JSON deberían ser las opciones para el cuerpo.
  • Al hacer clic en 'Enviar', obtendremos el siguiente resultado:

{

"datos": {

“salario”: 23000,

"nombre": "Robert Hall"

}

}

¿Pudiste entender el programa? ¿Sí? Entonces, genial. En el último caso, podemos ver tres API ejecutándose, la que no menciona nada en la URL, la que espera una cadena y luego la final que espera valores en el cuerpo. Con suerte, ahora puede abordar algunas tareas desafiantes de la API REST.