Solicitud de Golang HTTP

Solicitud de Golang HTTP

Una solicitud HTTP se refiere a una acción realizada por un cliente HTTP en un recurso específico de HTTP (protocolo). El recurso se identifica principalmente por una URL como un nombre de dominio o una dirección IP.

Las solicitudes de HTTP son uno de los componentes básicos de la web moderna. Usando la solicitud HTTP, podemos solicitar recursos como páginas web, videos, imágenes y otros archivos de un servidor remoto.

En este artículo, aprenderemos cómo construir un cliente HTTP básico utilizando el lenguaje de programación GO.

Requisitos

En este artículo, necesitará los siguientes recursos:

  1. Compilador Go Instalado en su sistema.
  2. Conocimiento básico de Go.
  3. Un editor de texto.

Http get

El primer método que vamos a implementar es el método HTTP Get. Un método GET nos permite solicitar datos de un recurso especificado. Por ejemplo, cuando necesitamos buscar artículos del Linuxhint.servidor com, usamos un método get.

El primer paso es asegurarse de configurar su proyecto. Si no está familiarizado con cómo crear y trabajar con un proyecto GO, consulte nuestro tutorial sobre la instalación de Go.

Una vez que se cree el proyecto, abra su archivo GO principal e importe el paquete NET/HTTP desde la biblioteca estándar GO.

El paquete NET/HTTP nos proporciona la funcionalidad y las utilidades para realizar una solicitud HTTP a servidores remotos.

Importar el paquete NET/HTTP agregando la línea a continuación en su archivo GO.

importar (
"net/http"
)

En el paquete Net/HTTP, hay un método GET que nos permite hacer que HTTP obtenga métodos. La sintaxis de la función es como se muestra a continuación:

FUNC Get (URL String) (Respuesta resp *, error err)

La función toma una URL como argumento y devuelve la respuesta como un puntero a la estructura y un error (si lo hay).

Si el método no encuentra un error, la respuesta devuelta contiene el cuerpo de respuesta del recurso solicitado.

Para usar el método Get, podemos crear código como se muestra:

resp, err: = http.Get ("https: // API.spacexdata.com/v4/lanzamiento/último ")
Si err != nulo
registro.Fatal (err)

En el ejemplo anterior, llamamos al método GET y pasamos la URL al recurso al que deseamos acceder como una cadena.

En nuestro ejemplo, usamos la API SpaceX.

Como notará, la función devuelve dos valores que almacenamos en dos variables: resp y err, que contiene la respuesta devuelta y el error, respectivamente.

Tenga en cuenta que el RESP no contiene nada más que un puntero a la estructura que contiene los datos reales. Por lo tanto, si intentamos imprimirlo, obtendremos un montón de datos confundidos.

Una salida de ejemplo de la solicitud anterior es como se muestra a continuación:

Para que veamos los datos reales, necesitamos acceder a la propiedad del cuerpo en la estructura devuelta. Luego necesitamos leerlo e imprimirlo en la consola, o guardarlo en un archivo.

Para esto, podemos usar el ioutil.Método ReadMe. Este método se define en el paquete Ioutil. Devuelve el cuerpo de respuesta y un error.

Nota: Después de leer el cuerpo de respuesta, debemos cerrarlo para evitar si bloquea otras operaciones en su programa.

Podemos hacer esto estableciendo el método de cierre para ejecutar después de que la función principal sea Finshed. La palabra clave de diferir en go entra en la mano.

El respador.Cuerpo.Close () nos permite cerrar el cuerpo de respuesta después de leer. Una vez que leemos el cuerpo de respuesta, podemos imprimirlo en la consola como se implementa en el código a continuación:

Echa un vistazo a nuestro tutorial sobre Golang Difer para obtener más información

paquete principal
importar (
"FMT"
"Io/Ioutil"
"registro"
"net/http"
)
func Main ()
resp, err: = http.Get ("https: // API.spacexdata.com/v4/lanzamiento/último ")
Si err != nulo
registro.Fatal (err)

// Cerrar cuerpo
diferir resp.Cuerpo.Cerca()
// Leer cuerpo
cuerpo, err: = ioutil.Readall (resp.Cuerpo)
Si err != nulo
registro.Fatal (err)

El código anterior implementa un cliente HTTP en GO capaz de hacer que HTTP obtenga la solicitud al método especificado.

Un valor de retorno de ejemplo es como se muestra:

Para una mejor legibilidad, puede formatear la respuesta en formato de Json legible o realizar Marshal y Unmarshal para seleccionar la salida deseada.

Consulte nuestro tutorial sobre JSON Marshal y Unmarshal para obtener más información.

Publicación HTTP

La siguiente parte de un cliente HTTP es hacer un método de publicación. Un método HTTP le permite enviar datos al servidor y realizar una acción en el recurso especificado. Esto podría crear, eliminar o actualizar un recurso.

En Go, podemos hacer una solicitud de publicación usando el paquete Net/HTTP. Nos proporciona el método de publicación, lo que nos permite enviar datos a un servidor.

La sintaxis de la función es como se muestra a continuación:

FUNC POST (URL, Cadena ContentType, Cuerpo IO.Lector) (Respuesta resp *, error err)

La función toma tres argumentos:

  1. La dirección del recurso.
  2. El tipo de contenido del cuerpo para enviar al servidor, una cadena
  3. El cuerpo de solicitud del tipo IO.Lector

La función debe devolver la respuesta y un error. Tenga en cuenta que tenemos que convertir los datos para enviar al servidor a un formato aceptable. Podemos hacer esto convirtiendo los datos JSON en IO.Lector, que es básicamente una interfaz en Go.

Verifique el código fuente para obtener más información.

Convertir datos de JSON a IO.El tipo de lector implica dos pasos:

El primero es codificar los datos JSON en formato de byte. Podemos hacer esto por Json Marshaling como se discutió en nuestro tutorial.

Una vez codificado, podemos convertir los datos en tipo implementados por IO.Interfaz del lector utilizando el método NewBuffer. Este método devuelve el IO.Tipo de lector que luego podemos pasar al método de publicación.

Un bloque de código de muestra se muestra a continuación:

cuerpo, _: = json.Marshal (map [cadena] cadena
"ID": "1",
"Sitio": "Linuxhint"
)
encoded_json: = bytes.Newbuffer (cuerpo)

Una vez que tenemos todas las piezas en orden, podemos invocar el método de publicación al recurso especificado. Tenga en cuenta que este tutorial utiliza datos y enlaces ficticios.

paquete principal
importar (
"Bytes"
"Codificación/JSON"
"FMT"
"Io/Ioutil"
"registro"
"net/http"
)
func Main ()
cuerpo, _: = json.Marshal (map [cadena] cadena
"ID": "1",
"Sitio": "Linuxhint"
)
resp, err: = http.Post ("http: // ejemplo.com/v4/endpoint/post "," aplicación/json ", cuerpo)
Si err != nulo
registro.Fatal (err)

diferir resp.Cuerpo.Cerca()
return_body, err: = ioutil.Readall (resp.Cuerpo)
Si err != nulo
registro.Fatal (err)

fmt.Println (cadena (cuerpo))

El método anterior implementa un cliente HTTP simple que puede convertir los métodos de publicación HTTP en un recurso especificado.

Conclusión

Este artículo le muestra cómo crear un cliente HTTP fundamental utilizando el lenguaje de programación GO. GO es excepcionalmente rápido cuando se trata de servir HTTP. Usando el conocimiento en este artículo, puede expandir el cliente a una aplicación de pleno conocimiento.

Sigue codificando.