Consumir API RESTful con Go

Consumir API RESTful con Go

Las API RESTful son arquitecturas populares para la transferencia de datos a través de la web. Las API RESTful suelen utilizar HTTP, lo que las hace adecuadas para casos en los que la apatridia es importante.





cómo ver una película juntos en línea

Como cualquier idioma del lado del servidor, puede interactuar con el protocolo HTTP y realizar solicitudes HTTP en Go.





Introducción al consumo de API RESTful en Go

los http El paquete proporciona la mayor parte de la funcionalidad que necesitará para interactuar con el protocolo HTTP en Go. Esto incluye realizar solicitudes HTTP, y no necesariamente necesita dependencias externas, como Gin o una base de datos .





MAKEUSEOF VÍDEO DEL DÍA

Puedes usar el http paquete para consumir API y obtener páginas para raspado web en Go .

Importe estos paquetes para comenzar a realizar solicitudes HTTP en Go.



import ( 
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)

Usarás el bytes paquete para manipular segmentos de bytes, el json paquete para dar formato a los datos de solicitud, el fmt paquete para escribir en la salida estándar, el ioutil paquete de entrada y salida, y el http paquete para el envío de solicitudes.

Una solicitud GET simple en Go

Típico OBTENER solicita leer datos de un servidor y puede proporcionar parámetros para los datos según la naturaleza y la especificación de la API.





En este tutorial, aprenderá a consumir API RESTful mediante el servicio simple de solicitud y respuesta de httpbin.

Aquí hay un ejemplo de cómo hacer una solicitud HTTP con Go:





url := "https://httpbin.org/get" 
response, err := http.Get(url)

if err != nil {
fmt.Printf("There was an error from the API request %s", err.Error())
} else {
// continues [1] ...
}

los URL variable es el punto final al que está enviando la solicitud. los Obtener El método toma la URL, ejecuta el Obtener solicitud y devuelve la respuesta, incluidos sus encabezados y cuerpo.

¿Cuál es el nombre de la memoria caché que se encuentra en la matriz del procesador?

Puede manejar cualquier error de la solicitud según sus requisitos. Si no hay errores, puede proceder a extraer la información que necesita de la Obtener solicitud.

} else { 
// ... [1] continued
responseData, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Printf("There was an error from parsing the request body %s", err.Error())
} else {
// continues [2] ...
}
}

Las respuestas Cuerpo El campo contiene el cuerpo de la respuesta. Utilizando el Lee todo metodo de la ioutil paquete, puede leer el cuerpo de la respuesta y manejar posibles errores.

} else { 
// ... [2] continued
fmt.Println(string(responseData))
}

los más La declaración imprime el cuerpo de la respuesta en su consola si no hay errores de la operación de lectura.

Aquí está el resultado de la OBTENER solicitud al punto final de httpbin.

  resultado de la solicitud GET

Una solicitud POST simple en Go

Las solicitudes POST típicas proporcionan cargas útiles de datos al servidor, y el servidor devuelve una respuesta según la operación.

Aquí hay una estructura simple para codificar una carga JSON en el servidor como parte de la solicitud POST.

type JSON struct { 
info string
message string
}

los JSON la estructura tiene la información y mensaje campos de cadena e inicializará una instancia de estructura para la solicitud.

no se puede eliminar la carpeta porque está abierta en otro programa
url := "https://httpbin.org/post" 

jsonInstance := JSON {
info: "expecting success",
message: "the request should return ",
}

los URL La variable almacena el punto final de la solicitud POST del sitio web httpbin. los jsonInstancia variable es una instancia de la estructura JSON que puede usar para almacenar y enviar datos estructurados.

Puedes usar el Mariscal método de la json paquete para formatear JSON para la solicitud.

jsonData, err := json.Marshal(jsonInstance) 
if err != nil {
fmt.Println("there was an error with the JSON", err.Error())
} else {
// continues [1] ...
}

los Mariscal El método también devuelve un error que puede manejar. Si no hay errores con la operación de cálculo de referencias JSON, puede proceder a realizar la solicitud POST.

Puedes usar el Correo Método para realizar solicitudes POST. los Correo El método toma el punto final de la URL, el tipo de contenido de la solicitud y un búfer de la carga útil. Devuelve la respuesta y un error.

} else { 
// ... continued [1]
response, err := http.Post(url, "application/json", bytes.NewBuffer(jsonData))

if err != nil {
fmt.Println("there was an error with the request", err.Error())
} else {
// continues [2] ...
}
}

Nuevamente, puede leer el cuerpo de la respuesta usando el Lee todo metodo de la ioutil paquete:

} else { 
// ... continued [2]
data, err := ioutil.ReadAll(response.Body)

if err != nil {
fmt.Println("there was an error reading the request body", err.Error())
} else {
fmt.Println(string(data))
}
}

los Imprimir La declaración envía el resultado de la solicitud HTTP a su consola.

como el documentación de httpbin especifica, este extremo POST devuelve los datos de la solicitud que le envía.

  resultado de la solicitud POST

Crear aplicaciones web en Go es fácil

Puede crear aplicaciones web con varias funciones en Go sin dependencias.

los http El paquete tiene las funciones que necesitará para la mayoría de sus operaciones. Puedes usar este paquete con otros como el json paquete para operaciones JSON, el contexto paquete para la señalización y el paquete de plantilla para la creación de plantillas. Hay muchos otros paquetes en la biblioteca estándar.