URI (Uniform Resource Identifier)

Un URI (Identificador uniforme de recursos) es una secuencia de caracteres que identifica un recurso lógico o físico. Los identificadores de recursos universales se especifican en la Solicitud de comentarios (RFC) 3986 del Grupo de trabajo de ingeniería de Internet (IETF) y se resumen y amplían en la documentación de la Arquitectura web del W3C, Arquitectura de la World Wide Web, Volumen 1. Según las especificaciones, los recursos no tiene que ser accesible en Internet. Ejemplos de recursos incluyen documentos electrónicos, sensores de puertas de ascensores, espacios de nombres XML, páginas web y microchips de identificación para mascotas.

Hay dos tipos de URI, identificadores uniformes de recursos (URL) y nombres uniformes de recursos (URN).

Uniform Resource Locator (URL) - este tipo de URI comienza indicando qué protocolo debe usarse para ubicar y acceder al recurso físico o lógico en una red. Si el recurso es una página web, por ejemplo, el URI comenzará con el protocolo HTTP. Si el recurso es un archivo, el URI comenzará con el protocolo FTP o si el recurso es una dirección de correo electrónico, el URI comenzará con el protocolo mailto. Es importante recordar que las URL no son persistentes. Esto significa que si cambia la ubicación del recurso, la URL también debe cambiar para apuntar a la nueva ubicación del recurso.

Nombre uniforme del recurso (URN) - este tipo de URI no indica qué protocolo debe utilizarse para localizar y acceder al recurso; simplemente etiqueta el recurso con un identificador único persistente e independiente de la ubicación. Una URN identificará el recurso a lo largo de su ciclo de vida y nunca cambiará. Cada URN tiene tres componentes: la etiqueta "urna", dos puntos y una cadena de caracteres que sirve como un identificador único. 

Cada URL es también un URI, pero no al revés.

Sintaxis de URI

La forma genérica de cualquier URI es esquema: [// [usuario: contraseña @] host [: puerto]] [/] ruta [? consulta] [# fragmento]

Esquema: El esquema establece la sintaxis concreta y los protocolos asociados para el URI. Los esquemas no distinguen entre mayúsculas y minúsculas y van seguidos de dos puntos. Idealmente, los esquemas de URI deben registrarse con la Autoridad de Números Asignados de Internet (IANA), aunque también se pueden utilizar esquemas no registrados.

Si bien algunos esquemas requieren las dos barras diagonales que se muestran en el ejemplo anterior, no todos los esquemas, incluidos los componentes de autoridad, que se describen a continuación, las requieren.

Componente de autoridad: Un componente de autoridad se compone de varias partes: una sección de autenticación opcional, un host, que consta de un nombre registrado o una dirección IP, y un número de puerto opcional. La sección de autenticación contiene el nombre de usuario y la contraseña, que están separados por dos puntos y seguidos por el símbolo en (@). Después de @ viene el nombre de host, que a su vez va seguido de dos puntos y luego un número de puerto. Es importante tener en cuenta que las direcciones IPv4 deben estar en notación decimal con puntos y las direcciones IPv6 deben estar entre corchetes.

La ruta, que contiene datos, está marcada por una secuencia de segmentos separados por barras. La ruta debe comenzar con una sola barra si hay una parte de autoridad presente. También puede comenzar con una barra simple incluso si no hay una parte de autoridad, pero no puede comenzar con una barra doble. Tenga en cuenta que, si bien esta parte de la sintaxis puede parecerse mucho a una ruta de archivo en particular, no siempre implica una relación con esa ruta del sistema de archivos.

Consulta (opcional): La consulta contiene una cadena de datos no jerárquicos. Aunque la sintaxis no está bien definida, la mayoría de las veces es una secuencia de pares de valores de atributo separados por un delimitador, como un ampersand o un punto y coma. La consulta está separada de la parte anterior por un signo de interrogación.

Fragmento (opcional): El fragmento contiene un identificador de fragmento que proporciona dirección a un recurso secundario. Por ejemplo, si el recurso principal es un documento HTML, el fragmento suele ser un atributo de ID de un elemento específico de ese documento. Si el fragmento identifica una determinada sección de un artículo identificado por el resto de la URI, un navegador web desplazará este elemento en particular a la vista. El fragmento está separado de la parte anterior por un hash (#).

Referencias y resolución de URI

La resolución de URI es una de las pocas operaciones comunes que se realizan en URI que también son URL. Implica determinar el método adecuado de acceso a los datos y los parámetros necesarios para localizar y recuperar el recurso al que apunta el URI.

Se utiliza una referencia de URI para determinar el uso común de un URI. Una referencia de URI puede tomar la forma de un URI completo, una parte específica de un URI completo o una cadena vacía. Si hay un identificador de fragmento, identificará una parte del recurso al que hace referencia el resto del URI.

Una referencia de URI puede ser una URI, pero también puede ser lo que se conoce como referencia relativa. Un URI es una referencia relativa si el prefijo de la referencia URI no coincide con la sintaxis de un esquema seguido de su separador de dos puntos. Para determinar qué componentes están presentes y si la referencia es relativa, cada uno de los cinco componentes de URI se analiza para sus subpartes y su validación.