Una introducción al paquete HTTP de Go

Una introducción al paquete HTTP de Go
Lectores como tú ayudan a apoyar a MUO. Cuando realiza una compra utilizando enlaces en nuestro sitio, podemos ganar una comisión de afiliado. Lee mas.

Go es un lenguaje potente y flexible para crear aplicaciones web. Él neto El paquete juega un papel esencial en el ecosistema de Go.





Como la mayoría de los lenguajes de programación del lado del servidor, Go incluye un paquete HTTP para interactuar con el protocolo HTTP. El paquete Go relevante es el http paquete, un subpaquete del neto paquete.





¿Qué es el paquete net/http?

  descripción general del paquete http

Él red/http El paquete es una de las bibliotecas estándar en Go. Proporciona un conjunto completo de funciones y tipos para crear clientes HTTP, servidores y otras operaciones basadas en HTTP. Éstos incluyen:





  • Funciones para realizar solicitudes HTTP.
  • Atención de solicitudes y respuestas.
  • Sirviendo solicitudes HTTP.
  • Objetos relacionados como encabezados y cookies.

Él red/http El paquete también es compatible con el cifrado TLS/SSL, HTTP/2 y otras funciones avanzadas, lo que convierte al paquete en una herramienta esencial para los desarrolladores de Go.

Muchas bibliotecas y marcos populares de Go, desde el kit de herramientas web Gorilla hasta el marco web Echo, se construyen sobre la red/http paquete.



Puesta en marcha de un servidor HTTP simple

La puesta en marcha de servidores es una de las operaciones básicas que debe comprender para trabajar con el protocolo HTTP.

Aquí hay un programa para ejecutar un servidor simple en Go :





 package main 

import (
    "fmt"
    "net/http"
)

// handler is a typical HTTP request-response handler in Go; details later
func handler(w http.ResponseWriter, r *http.Request) {
    // Fprintf formats the string to a writer
    fmt.Fprintf(w, "Hello, World!")
}

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe(":8080", nil)
}

Él manipulador La función es un controlador de solicitud-respuesta típico para el http paquete. Esta función escribe la cadena '¡Hola, mundo!' al escritor de respuesta HTTP.

Al ejecutar el código y visitar http://localhost:8080/ en un navegador web, debería ver el mensaje '¡Hola, mundo!' cadena que se muestra en su navegador.





  resultado de iniciar un servidor

Manejo de solicitudes y respuestas

Puede manejar las solicitudes entrantes con el HandleFunc metodo de la http paquete. Él HandleFunc El método toma una cadena de ruta y una función de controlador.

Él http.Solicitud El método es una instancia de la solicitud entrante y puede usar los numerosos métodos de su instancia para interactuar con las solicitudes a la ruta.

 http.HandleFunc("/users", func(w http.ResponseWriter, r *http.Request) { 
    switch r.Method {
    case "GET":
        // handle GET request
    case "POST":
        // handle POST request
    default:
        http.Error(w, "Invalid request method", http.StatusMethodNotAllowed)
    }
})

El código anterior utiliza el http paquete para definir una función de controlador HTTP para el /usuarios ruta. La función del controlador escucha las solicitudes HTTP entrantes en la ruta y las procesa según el método de solicitud (por ejemplo, CONSEGUIR , PUBLICAR , etc.)

La función handler toma el escritor de respuestas y Solicitud métodos como argumentos. Él escritor de respuestas es una interfaz que ayuda al controlador a escribir datos como respuesta al cliente, y el Solicitud es una estructura que contiene información sobre la solicitud entrante, como el método HTTP, URL, encabezados, etc.

La función de controlador anterior utiliza un cambiar instrucción para determinar el método de solicitud y ejecutar diferentes bloques de código según el método. Si el método es CONSEGUIR , el controlador manejará el CONSEGUIR solicitud. De lo contrario, el método es PUBLICAR; se encargará de la PUBLICAR solicitud.

Si el método es cualquier otra cosa, enviará un Error HTTP con un mensaje de 'Método de solicitud no válido' y un EstadoMétodoNoPermitido Código de estado HTTP al cliente.

Puede volver a escribir cadenas en el cliente usando el Escribe método de su instancia de escritor que toma un segmento de bytes de cadenas y escribe la cadena.

 w.Write([]byte("Hello, World!")) 

Puedes usar el WriteHeader método de su escritor de respuestas instancia para escribir encabezados al cliente.

 w.WriteHeader(http.StatusOK) 

Trabajar con software intermedio HTTP

El middleware consta de funciones que interceptan solicitudes HTTP entrantes para operaciones antes de que la solicitud pase a la siguiente función de controlador.

Este es un ejemplo de registro de la función de controlador de middleware en Go:

 func loggingMiddleware(next http.Handler) http.Handler { 
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        // log the request
        next.ServeHTTP(w, r)
        // log the response
    })
}

Él loggingMiddleware La función toma un controlador HTTP y devuelve un nuevo controlador HTTP. El controlador HTTP devuelto es una función anónima que admite un escritor de respuesta HTTP y una solicitud HTTP. La función registra la solicitud y llama al ServirHTTP método en el próximo Controlador HTTP, pasando el escritor de respuesta y la solicitud como argumentos.

Puede manejar funciones de middleware con el Manejar metodo de la http paquete. Él Manejar El método toma la ruta y la función de middleware.

descargar videos de youtube directamente a iphone
 http.Handle("/", loggingMiddleware(http.HandlerFunc(handler))) 

Redirecciones con el paquete HTTP

La redirección es una operación popular para las aplicaciones web que remiten a los usuarios a otros recursos o páginas web.

Puede redirigir a otra página web usando el redirigir metodo de la http paquete.

 http.Redirect(w, r, "http://example.com", http.StatusMovedPermanently) 

Él redirigir El método toma en cuenta escritor de respuestas y Solicitud instancias, la URL de la nueva página y un código de estado para la redirección.

Puede crear API complejas en Go

Él http El paquete es una herramienta potente y flexible para crear API complejas. Puede usar la rica biblioteca estándar de Go y otros poderosos paquetes de terceros para agregar funcionalidad a sus API, como conectividad de base de datos y soporte para diferentes marcos web.

Con Go, puede crear API escalables y de alto rendimiento que manejen un tráfico de solicitudes significativo y tareas complejas de procesamiento de datos con facilidad.