Los URL (localizadores uniformes de recursos) son una de las piezas de infraestructura más críticas de Internet. A medida que crea aplicaciones web, deberá manipular las URL para localizar y recuperar recursos.
Cuando cree aplicaciones web más sofisticadas, deberá trabajar con direcciones URL en un nivel más detallado. Es posible que deba identificar el esquema, el nombre de host, la ruta y los parámetros de consulta. También deberá saber cómo codificar y decodificar URL para poder manejar caracteres especiales y mantener segura su aplicación web.
La biblioteca estándar de Go proporciona el paquete net/url para manejar URL y componentes de URL.
El paquete de URL
El URL El paquete proporciona funciones y características integrales para trabajar con URL y sus partes separadas. Proporciona funciones para analizar, construir, codificar y decodificar URL, lo que hace que el paquete sea útil para el desarrollo web.
Algunas de las características clave de la URL paquete son la capacidad de analizar URL en componentes individuales para la manipulación y la construcción de URL para solicitudes HTTP. El URL paquete también proporciona un URL estructura con un Analizar gramaticalmente método para analizar cadenas en URL.
Aquí esta la dirección URL URL modelo de estructura:
paquete principal
tipo URL estructura {
// Esquema es el esquema de protocolo de la URL,
// como "http" o "https"
Esquema cadena// Opaco se usa para contener cualquier dato opaco
// que debe estar codificado en la URL
Opaco cadena// El usuario tiene información sobre el usuario que realiza la solicitud,
// como un nombre de usuario y contraseña
Usuario *Información de usuario// Host es el nombre de host o la dirección IP
// del servidor que aloja la URL
Anfitrión cadena// Path es la ruta de la URL en el servidor
Camino cadena// RawPath es el original,
// ruta codificada de la URL
RawPath cadena// ForceQuery indica si la URL debe incluir una cadena de consulta
// incluso si está vacío
Forzar consulta bool// RawQuery es el original,
//cadena de consulta codificada de la URL
RawQuery cadena// Fragmento es el identificador de fragmento de la URL,
// utilizado para vincular a un elemento específico en una página
Fragmento cadena
// RawFragment es el original,
// identificador de fragmento codificado de la URL
RawFragment cadena
}
Saber cómo acceder a varias partes del URL struct puede ser útil para tareas como la validación.
Análisis de URL mediante la función Parse
El Analizar gramaticalmente función de la URL El paquete proporciona la funcionalidad para analizar cadenas de URL en componentes individuales. El Analizar gramaticalmente La función toma una sola URL como argumento y devuelve un puntero a la dirección URL URL estructura que contiene los datos analizados de la URL y un tipo de error.
Así es como puede usar el Analizar gramaticalmente función para recuperar los elementos de una URL.
importar (
"fmt"
"red/url"
)funciónprincipal() {
// La URL que desea analizar
ejemploURL := " https://www.example.com/path? param1=valor1¶m2=valor2"// Analizar la URL
parsedURL, err := url. Analizar (URL de ejemplo)si error! = nulo {
fmt. Imprimir (err)
devolver
}
// Imprime todos los campos de la URL
fmt. imprimir("Esquema:", URL analizada.Esquema)
fmt. imprimir("Opaco:", URL analizada.Opaque)
fmt. imprimir("Usuario:", URL analizada.Usuario)
fmt. imprimir("Anfitrión:", URL analizada.Host)
fmt. imprimir("Camino:", URL analizada.Ruta)
fmt. imprimir("Ruta sin procesar:", URL analizada.RawPath)
fmt. imprimir("Forzar consulta:", URL analizada.ForceQuery)
fmt. imprimir("Consulta sin procesar:", URL analizada.RawQuery)
fmt. imprimir("Fragmento:", URL analizada.Fragmento)
fmt. imprimir("Fragmento sin procesar:", URL analizada.RawFragment)
}
El URL de ejemplo La variable contiene la URL completa sin analizar, y la Analizar gramaticalmente función analiza el contenido de la URL de ejemplo variable y devuelve la URL analizada. El programa finaliza con una serie de llamadas a Imprimir para demostrar los campos individuales del URL estructura
La función de análisis no comprueba si una URL es real y realmente existe, solo analiza la URL sintácticamente. Puedes usar el http paquete para realizar una solicitud GET a la URL y verificar la respuesta:
importar (
"fmt"
"red/http"
)funciónprincipal() {
// La URL que desea verificar
ejemploURL := " https://www.example.com"// Hacer una solicitud HTTP GET a la URL
respuesta, error := http. Obtener (URL de ejemplo)si error! = nulo {
fmt. Imprimir (err)
devolver
}
aplazar respuesta. Cuerpo. Cerca()
// Comprobar el código de estado de la respuesta
si respuesta. Código de estado == http. EstadoOK {
fmt. imprimir("URL existe".)
} demás {
fmt. imprimir("La URL no existe".)
}
}
El principal función hace un CONSEGUIR solicitud a la URL de ejemplo utilizando el Conseguir función de la http paquete. Esa función devuelve una instancia de respuesta y un tipo de error. El programa termina con un si declaración para validar la existencia del sitio web mediante la comprobación de la Código de estado HTTP en contra de EstadoOk constante de la http paquete.
Este enfoque le permite realizar acciones en función del resultado de la comprobación, como redirigir el usuario a una página diferente, mostrar un mensaje de error o volver a intentar la solicitud después de un cierto período.
Codificación y decodificación de parámetros de URL
El URL paquete proporciona el Codificar método para codificar parámetros de URL. El Codificar función porcentaje-codifica caracteres especiales y espacios en parámetros de URL.
importar (
"fmt"
"red/url"
)funciónprincipal() {
// crea una nueva URL. Estructura de valores
parámetros := url. Valores{}// agrega valores a la estructura
parámetros Agregar("nombre", "John Smith")
parámetros Agregar("edad", "30")
parámetros Agregar("género", "masculino")// codifica la estructura en una cadena
parámetroscodificados := parámetros. Codificar()
fmt. Println (parámetros codificados)
// Salida: "edad=30&género=masculino&nombre=John+Smith"
}
El principal función crea una nueva Valores instancia de estructura de la URL paquete, y el Agregar El método de la instancia de estructura agrega pares de datos clave-valor a la instancia de estructura.
El Codificar convierte el par clave-valor al formato de cadena de URL "clave1=valor1&clave2=valor2&clave3=valor3".
Puede decodificar una cadena URL codificada con el ParseQuery función de la URL paquete.
importar (
"fmt"
"red/url"
)funciónprincipal() {
// cadena codificada de parámetros de URL
parámetroscodificados := "edad=30&género=masculino&nombre=John+Smith"
// analiza la cadena codificada en una url. Estructura de valores
parámetros, error := url. ParseQuery (parámetros codificados)
si error! = nulo {
fmt. Imprimir (err)
}
// imprime la estructura
fmt. Println (parámetros)
// Salida: map[edad:[30] género:[masculino] nombre:[John Smith]]
}
El parámetrocodificado variable es una cadena URL codificada. El ParseQuery función toma en el parámetrocodificado variable y devuelve la cadena URL descodificada y un error.
Estos paquetes Go pueden llevar su juego de enrutamiento web al siguiente nivel
Las URL que utiliza para las páginas de su aplicación web contribuyen a su rendimiento y visibilidad en los motores de búsqueda. El enrutamiento web es el proceso de dirigir las solicitudes entrantes a la función de controlador adecuada en función de la URL.
Puede enrutar usando el paquete http o paquetes populares de terceros como Gorilla Mux, Chi, Pat o Httprouter. Estos paquetes hacen que el enrutamiento sea más fácil que el paquete http al abstraer algunas de sus complejidades.