URI (Uniform Resource Identifier)

A URI  (Uniform Resource Identifier) é uma sequência de caracteres que identifica um recurso lógico ou físico.  Universal Resource Identifiers are specified in the Internet Engineering Task Force (IETF) Request for Comments (RFC) 3986 and are summarized and extended in documentation for the W3C's Web Architecture, Architecture of the World Wide Web, Volume 1. De acordo com as especificações, os recursos não têm de estar acessíveis na Internet. Exemplos de recursos incluem documentos eletrônicos, sensores de portas de elevador, espaços de nomes XML, páginas da Web e microchips de ID para animais de estimação.

Existem dois tipos de URIs, Uniform Resource Identifiers (URLs) e Uniform Resource Names (URNs).

Uniform Resource Locator (URL) - este tipo de URI começa declarando qual protocolo deve ser usado para localizar e acessar o recurso físico ou lógico em uma rede. Se o recurso for uma página web, por exemplo, o URI começará com o protocolo HTTP.  se o recurso for um arquivo, o URI começará com o protocolo FTP  ou se o recurso for um endereço de e-mail, o URI começará com o protocolo mailto. É importante lembrar que os URLs não são persistentes. Isso significa que se a localização do recurso mudar, a URL também precisa mudar para apontar para a nova localização do recurso.

Uniform Resource Name (URN) - este tipo de URI não indica qual protocolo deve ser usado para localizar e acessar o recurso; ele simplesmente rotula o recurso com um identificador único persistente e independente da localização.  Um URN identificará o recurso durante todo o seu ciclo de vida e nunca mudará. Cada URN tem três componentes: a etiqueta "urn", um dois pontos e uma cadeia de caracteres que serve como um identificador único. 

URI.png

Cada URL é também um URI, mas não o inverso.

Sintaxe do URI

A forma genérica de qualquer URI é scheme:[//[user:password@]host[:port]][/]path[?query][#fragment]

>b>Scheme: O esquema estabelece a sintaxe concreta e quaisquer protocolos associados para o URI. Os esquemas são insensíveis a maiúsculas e minúsculas e são seguidos por dois pontos. Idealmente, esquemas URI devem ser registrados com a Autoridade para Atribuição de Números na Internet (IANA), embora esquemas não registrados também possam ser usados.

>p>Embora os dois cortes mostrados no exemplo acima sejam exigidos por alguns esquemas, eles não são exigidos por todos os esquemas, incluindo os componentes da autoridade, que são descritos abaixo.

Componente da autoridade: Um componente de autoridade é composto de várias partes: uma seção de autenticação opcional, um host -- consistindo de um nome registrado ou um endereço IP -- e um número de porta opcional. A seção de autenticação contém o nome de usuário e a senha, que são separados por dois pontos e seguidos pelo símbolo para at (@). Após o @ vem o nome da máquina, que por sua vez é seguido por dois pontos e depois por um número de porta. É importante notar que os endereços IPv4 devem estar em notação ponto-decimal, e os endereços IPv6 devem estar entre parênteses.

O caminho, que contém dados, é anotado por uma sequência de segmentos separados por barras. O caminho deve começar com uma única barra se uma parte de autoridade estava presente. Também pode começar com uma única barra, mesmo que não haja uma parte de autoridade, mas não pode começar com uma barra dupla. Tenha em mente que enquanto esta parte da sintaxe pode se parecer muito com um caminho de arquivo em particular, ela nem sempre implica uma relação com aquele caminho do sistema de arquivos.

Query (opcional): A consulta contém uma string de dados não hierárquicos. Embora a sintaxe não seja bem definida, na maioria das vezes é uma sequência de pares de valores de atributos separados por um delimitador, como um ampersand ou um ponto-e-vírgula. A consulta é separada da parte anterior por um ponto de interrogação.

Fragmento (opcional): O fragmento contém um identificador de fragmento que dá direção a um recurso secundário. Por exemplo, se o recurso primário for um documento HTML, o fragmento é muitas vezes um atributo de identificação de um elemento específico desse documento. Se o fragmento identificar uma determinada seção de um artigo identificado pelo resto do URI, um navegador Web irá rolar esse elemento específico para a visualização. O fragmento é separado da parte anterior por um hash (#).

resolução do URI e referências

resolução do URI é uma das poucas operações comuns realizadas em URIs que também são URLs. Envolve a determinação do método adequado de acesso aos dados e parâmetros necessários para localizar e recuperar o recurso que o URI aponta para.

Uma referência URI é usada para determinar o uso comum para um URI. Uma referência URI pode tomar a forma de um URI completo, uma porção específica de um URI completo ou uma string vazia. Se houver um identificador de fragmento, ele identificará alguma porção do recurso referido pelo resto do URI.

Uma referência URI pode ser um URI, mas também pode ser o que é conhecido como referência relativa.  Um URI é uma referência relativa se o prefixo da referência URI não corresponder à sintaxe de um esquema seguido pelo seu separador de cólon. Para determinar que componentes estão presentes e se a referência é relativa, cada um dos cinco componentes do URI é analisado para suas subpartes e sua validação.