Revelando URI, URL y URN
Esta guía ofrece una visión general de URI, URL y URN, explicando sus diferencias y casos de uso.
Esta guía ofrece una visión general de URI, URL y URN, explicando sus diferencias y casos de uso.
Al desarrollar aplicaciones web, a menudo necesitamos llamar a diferentes servicios web. Al configurar la comunicación y conexión de diferentes servicios web, frecuentemente nos encontramos con los conceptos de URI, URL y URN. Por lo general, a los usuarios les resulta difícil distinguir entre ellos, lo que lleva a un uso mezclado o incorrecto. En este artículo, proporcionaremos ejemplos y explicaremos las diferencias entre ellos para ayudar a todos a comprender mejor estos conceptos y a interpretarlos y usarlos correctamente al leer blogs técnicos, documentación o comunicarse con otros ingenieros.
Un URL (Localizador Uniforme de Recursos) proporciona la dirección web o ubicación de recursos en internet. Se utiliza generalmente para especificar la ubicación de páginas web, archivos o servicios. Un URL proporciona un formato estandarizado para acceder a los recursos en la web. Es un componente clave de la navegación web, los enlaces y la comunicación en internet.
Un URL consta de varias partes que juntas definen la dirección del recurso y el protocolo utilizado para acceder a él. Vamos a analizar este URL como ejemplo y explicar la función de cada parte una por una.
Esquema: Este especifica el protocolo o esquema utilizado para acceder a los recursos, como HTTP (Protocolo de Transferencia de Hipertexto), HTTPS (HTTP Seguro), FTP (Protocolo de Transferencia de Archivos) u otros.
El esquema en el URL es https.
Host: El host especifica el nombre de dominio o la dirección IP del servidor que aloja los recursos.
El host en el URL es example.logto.io.
Puerto: (Opcional) El puerto representa un número de puerto específico en el host para acceder al recurso. Si no se especifica ningún puerto, se predetermina al puerto estándar para el esquema dado.
El puerto predeterminado para HTTP es 80, mientras que el puerto predeterminado para HTTPS es 443.
El puerto en el URL es 8080.
Ruta: (Opcional) La ruta indica la ubicación específica o el directorio en el servidor donde se encuentra el recurso, lo cual puede incluir directorios y nombres de archivos.
La ruta en el URL debería ser /blogs/index.html.
Parámetros de consulta: (Opcional) Los parámetros de consulta son parámetros adicionales que se pasan a un recurso, típicamente utilizados en aplicaciones web dinámicas. Aparecen después de la ruta y son separados por el símbolo ?.
Los parámetros de consulta en el URL son params1=value1¶m2=value2, lo que a menudo se representa en forma de pares clave-valor, con pares separados por el símbolo &. En escenarios de uso real, a menudo se requiere codificación para evitar caracteres como espacios.
Identificador de fragmento: (Opcional) También se puede llamar ancla, es utilizado para ubicar una posición específica en el recurso.
El ancla en el URL es #introduction.
Además, por ejemplo, al utilizar servicios de archivos o muchos botones de "Contáctanos" en páginas web se enlazan a URLs, como:
ftp://documents.logto.io/files/legal/soc_ii.pdfmailto:[email protected]?subject=Enterprise%20quota%20requestURI significa "Identificador Uniforme de Recursos". Es una cadena de caracteres que identifica un recurso específico, como una página web, archivo o servicio. URI proporciona una forma de identificar y localizar de manera única los recursos utilizando un formato estandarizado.
Un URI consiste principalmente en dos componentes:
Desde una perspectiva gramatical, los URIs en su mayoría siguen el mismo formato que los URLs, tal como se especifica en RFC 3986.
Aunque este formato de URI es similar al de los URLs, no garantiza el acceso a ningún recurso en la Web. Utilizar este formato puede reducir los conflictos de nombres de espacios de nombres.
En la sección anterior, presentamos URLs, que no solo identifican un recurso, sino que también ayudan a localizar ese recurso. Por lo tanto, de hecho, los URLs son un subconjunto propio de los URIs.
El URN puede no ser tan común como el URL y el URI. Significa "Nombre Uniforme de Recurso", y su alcance es identificar recursos de manera persistente, incluso si esos recursos ya no existen.
A diferencia de un URL, un URN no proporciona ninguna información sobre cómo localizar el recurso; simplemente lo identifica, al igual que un URI puro. Específicamente, un URN es un tipo de URI con el esquema "urn" y tiene la siguiente estructura, como se describe en RFC 2141:
<URN>:<NID>:<NSS>
urn.Por ejemplo, un libro muy famoso que introduce sistemas informáticos CSAPP tiene su número ISBN representado como URN urn:isbn:9780134092669.
Los URNs se utilizan frecuentemente en varios protocolos estándar, como la aserción en el protocolo SAML, que corresponde al URN urn:oasis:names:tc:SAML:2.0:assertion.
En ingeniería de software, también podemos definir URNs para usos específicos en nuestros propios sistemas según las reglas de nomenclatura URN. Por ejemplo, en Logto, para habilitar Organización, necesitas añadir el alcance urn:logto:scope:organizations en la configuración al utilizar el SDK. Cada Organización también tiene su propio URN dedicado urn:logto:organization:{orgId}.
La relación entre URI, URL y URN puede ilustrarse utilizando el siguiente diagrama de Venn:

URI, URL y URN pueden usarse para identificar diferentes recursos, pero solo la URL puede localizar con precisión la posición del recurso.
URI y URL pueden soportar varios esquemas, como HTTP, HTTPS, FTP, pero el URN se puede considerar que solo soporta el esquema urn.
Todos los URLs o URNs son URIs, pero no todos los URIs son URLs o URNs.