Português (Portugal)
  • uri
  • url
  • urn

Desvendando URI, URL e URN

Este guia fornece uma visão geral de URI, URL e URN, explicando as suas diferenças e casos de utilização.

Darcy Ye
Darcy Ye
Developer

Quando desenvolvemos aplicações web, muitas vezes precisamos de chamar diferentes serviços web. Ao configurar a comunicação e conexão de diferentes serviços web, frequentemente encontramos os conceitos de URI, URL e URN. Normalmente, os utilizadores acham difícil distingui-los, o que leva ao uso misto ou incorreto. Neste artigo, vamos fornecer exemplos e explicar as diferenças entre eles para ajudar todos a compreender melhor estes conceitos e interpretá-los e utilizá-los corretamente ao ler blogs técnicos, documentação ou ao comunicar com outros engenheiros.

O que é uma URL?

Uma URL (Localizador Uniforme de Recursos) fornece o endereço na web ou a localização dos recursos na internet. É normalmente usada para especificar a localização de páginas web, ficheiros ou serviços. Uma URL fornece um formato padronizado para acessar recursos na web. É um componente chave da navegação na web, ligação e comunicação na internet.

Uma URL consiste em várias partes que, juntas, definem o endereço do recurso e o protocolo usado para acessá-lo. Vamos analisar a URL abaixo como exemplo e explicar a função de cada parte uma a uma.

  1. Esquema: Este especifica o protocolo ou esquema usado para acessar os recursos, como HTTP (Protocolo de Transferência de Hipertexto), HTTPS (HTTP Seguro), FTP (Protocolo de Transferência de Ficheiros), ou outros.

    O esquema na URL é https.

  2. Host: O host especifica o nome de domínio ou endereço IP do servidor que hospeda os recursos.

    O host na URL é example.logto.io.

  3. Porta: (Opcional) A porta representa um número de porta específico no host para acessar o recurso. Se nenhuma porta for especificada, assume-se a porta padrão para o esquema dado.

    A porta padrão para HTTP é 80, enquanto a porta padrão para HTTPS é 443.

    A porta na URL é 8080.

  4. Caminho: (Opcional) O caminho indica a localização ou diretório específico no servidor onde o recurso está localizado, podendo incluir diretórios e nomes de ficheiros.

    O caminho na URL deve ser /blogs/index.html.

  5. Parâmetros de Consulta: (Opcional) Os parâmetros de consulta são parâmetros adicionais passados para um recurso, geralmente usados em aplicações web dinâmicas. Eles aparecem após o caminho e são separados pelo símbolo ?.

    Os parâmetros de consulta na URL são param1=value1&param2=value2, que são muitas vezes representados na forma de pares chave-valor, com pares separados pelo símbolo &. Em cenários de uso real, geralmente é necessário codificação para evitar caracteres como espaços.

  6. Identificador de Fragmento: (Opcional) Também pode ser chamado de âncora, usado para localizar uma posição específica no recurso.

    A âncora na URL é #introduction.

Além disso, por exemplo, ao usar serviços de ficheiros ou muitos botões "Contacte-nos" em páginas web, eles estão ligados a URLs, como:

  • ftp://documents.logto.io/files/legal/soc_ii.pdf
  • mailto:[email protected]?subject=Enterprise%20quota%20request

O que é um URI?

URI significa "Identificador Uniforme de Recursos". É uma cadeia de caracteres que identifica um recurso específico, como uma página web, ficheiro ou serviço. URI fornece uma forma de identificar e localizar recursos de forma única usando um formato padronizado.

Um URI consiste principalmente em dois componentes:

  1. Esquema: Indica o protocolo ou esquema usado para acessar o recurso.
  2. Identificador de Recurso: Identifica o recurso específico que está a ser acessado ou referenciado. O formato do identificador de recurso depende do esquema usado.

Do ponto de vista gramatical, os URIs seguem maioritariamente o mesmo formato que as URLs, conforme especificado em RFC 3986.

Embora este formato de URI seja semelhante ao das URLs, não garante o acesso a nenhum recurso na Web. Usar este formato pode reduzir conflitos de nomes em espaços de nomes.

Na seção acima, introduzimos URLs, que não apenas identificam um recurso, mas também ajudam a localizar esse recurso. Portanto, na verdade, URLs são um subconjunto apropriado de URIs.

O que é um URN?

URN pode não ser tão comum quanto URL e URI. Significa "Nome Uniforme de Recurso", e o seu âmbito é identificar recursos de forma persistente, mesmo que tais recursos já não existam.

Ao contrário de uma URL, um URN não fornece nenhuma informação sobre como localizar o recurso; ele apenas o identifica, tal como um URI puro. Especificamente, um URN é um tipo de URI com o esquema "urn" e tem a seguinte estrutura, conforme descrito em RFC 2141:

<URN>:<NID>:<NSS>

  1. URN: Normalmente urn.
  2. Identificador de Espaço de Nomes (NID): Representa um espaço de nomes único ou sistema de identificadores que define e gerencia o URN. Ele fornece contexto e garante a unicidade do identificador. Exemplos de espaços de nomes incluem ISBN (Número Internacional Normalizado do Livro), etc.
  3. Cadeia Específica do Espaço de Nomes (NSS): É uma cadeia de caracteres que identifica de forma única um recurso dentro do espaço de nomes especificado. O identificador em si não transmite nenhuma informação sobre a localização ou método de acesso ao recurso.

Por exemplo, um livro muito famoso que introduz sistemas de computadores CSAPP tem o seu número ISBN representado como URN urn:isbn:9780134092669.

URNs são frequentemente usados em vários protocolos padronizados, como a asserção no protocolo SAML, que corresponde ao URN urn:oasis:names:tc:SAML:2.0:assertion.

Na engenharia de software, também podemos definir URNs para fins específicos nos nossos próprios sistemas de acordo com as regras de nomeação de URN. Por exemplo, no Logto, para habilitar a Organização, precisas de adicionar o escopo urn:logto:scope:organizations na configuração ao usar o SDK. Cada Organização também tem o seu próprio URN dedicado urn:logto:organization:{orgId}.

Conclusão

A relação entre URI, URL e URN pode ser ilustrada utilizando o seguinte diagrama de Venn:

Relações

URI, URL e URN podem ser todos usados para identificar diferentes recursos, mas apenas a URL pode localizar precisamente a posição do recurso.

URI e URL podem suportar vários esquemas, como HTTP, HTTPS, FTP, mas URN pode ser considerado como suportar apenas o esquema urn.

Todas as URLs ou URNs são URIs, mas nem todos os URIs são URLs ou URNs.