• uri
  • url
  • urn

Odkrywanie URI, URL i URN

Ten przewodnik zawiera przegląd URI, URL i URN, wyjaśniając ich różnice oraz przypadki użycia.

Darcy Ye
Darcy Ye
Developer

Podczas tworzenia aplikacji internetowych często musimy wywoływać różne usługi webowe. Konfigurując komunikację i połączenie różnych usług webowych, często napotykamy na pojęcia takie jak URI, URL i URN. Zwykle użytkownicy mają trudności z ich rozróżnieniem, co prowadzi do mieszania lub nieprawidłowego użycia. W tym artykule podamy przykłady i wyjaśnimy różnice między nimi, aby pomóc wszystkim lepiej zrozumieć te pojęcia oraz poprawnie interpretować i używać ich podczas czytania blogów technicznych, dokumentacji lub komunikacji z innymi inżynierami.

Co to jest URL?

URL (Uniform Resource Locator) to adres internetowy lub lokalizacja zasobów w internecie. Zwykle jest używany do określenia lokalizacji stron internetowych, plików czy usług. URL zapewnia ustandaryzowany format dostępu do zasobów w sieci. Jest kluczowym elementem przeglądania internetu, linkowania oraz komunikacji internetowej.

URL składa się z kilku części, które razem definiują adres zasobu oraz protokół użyty do uzyskania do niego dostępu. Przyjrzyjmy się poniższemu URL-owi i wyjaśnijmy funkcje każdej części.

  1. Schemat (Scheme): Określa protokół lub schemat użyty do uzyskania dostępu do zasobu, na przykład HTTP (Hypertext Transfer Protocol), HTTPS (HTTP Secure), FTP (File Transfer Protocol) lub inne.

    Schemat w URL to https.

  2. Host: Host określa nazwę domeny lub adres IP serwera, który udostępnia zasoby.

    Host w URL to example.logto.io.

  3. Port: (Opcjonalny) Port reprezentuje konkretny numer portu na hoście uzyskując dostęp do zasobu. Jeśli port nie jest określony, domyślnie jest używany standardowy port dla danego schematu.

    Domyślny port dla HTTP to 80, a dla HTTPS to 443.

    Port w URL to 8080.

  4. Ścieżka: (Opcjonalna) Ścieżka wskazuje konkretną lokalizację lub katalog na serwerze, w którym znajdują się zasoby, co może obejmować katalogi i nazwę plików.

    Ścieżka w URL to /blogs/index.html.

  5. Parametry zapytania: (Opcjonalne) Parametry zapytania to dodatkowe parametry przekazywane do zasobu, zwykle używane w dynamicznych aplikacjach internetowych. Pojawiają się one po ścieżce i są oddzielone znakiem ?.

    Parametry zapytania w URL to param1=value1&param2=value2, które często są przedstawiane w formie par klucz-wartość, przy czym pary są oddzielone znakiem &. W rzeczywistych scenariuszach użytkowania, często wymagane jest kodowanie, aby uniknąć niedozwolonych znaków jak spacja.

  6. Identyfikator fragmentu: (Opcjonalny) Może być również nazywany kotwicą, używany do lokalizowania konkretnej pozycji w zasobie.

    Kotwica w URL to #introduction.

Dodatkowo, na przykład korzystanie z usług plikowych lub wiele przycisków "Kontakt" na stronach internetowych jest połączonych z URL-ami, takimi jak:

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

Co to jest URI?

URI oznacza "Uniform Resource Identifier" . Jest to ciąg znaków, który identyfikuje konkretny zasób, taki jak strona internetowa, plik czy usługa. URI zapewnia sposób na jednoznaczne identyfikowanie i lokalizowanie zasobów za pomocą ustandaryzowanego formatu.

URI składa się głównie z dwóch komponentów:

  1. Schemat (Scheme): Określa protokół lub schemat użyty do uzyskania dostępu do zasobu.
  2. Identyfikator zasobów: Identyfikuje konkretny zasób, który jest uzyskiwany lub do którego jest odnoszony. Format identyfikatora zasobu zależy od stosowanego schematu.

Z gramatycznego punktu widzenia, URI głównie podąża za tym samym formatem co URL, jak określono w RFC 3986.

Chociaż format URI jest podobny do URL, nie zapewnia on dostępu do zasobu w sieci. Korzystanie z tego formatu może zmniejszyć konflikty nazw przestrzeni nazw.

W sekcji powyżej wprowadziliśmy URL-e, które nie tylko identyfikują zasób, ale również pomagają w zlokalizowaniu tego zasobu. W rzeczywistości URL-e są właściwym podzbiorem URI.

Co to jest URN?

URN nie jest tak powszechny jak URL i URI. Stoi za nim "Uniform Resource Name", a jego zadaniem jest identyfikacja zasobów w sposób trwały, nawet jeśli takie zasoby już nie istnieją.

W przeciwieństwie do URL, URN nie dostarcza żadnych informacji na temat lokalizacji zasobu; po prostu go identyfikuje, trochę jak czysty URI. Konkretne, URN jest rodzajem URI z schematem "urn" i posiada następującą strukturę, opisaną w RFC 2141:

<URN>:<NID>:<NSS>

  1. URN: Zwykle urn.
  2. Identyfikator przestrzeni nazw (NID): Reprezentuje unikalną przestrzeń nazw lub system identyfikatorów, który definiuje i zarządza URN. Zapewnia kontekst i zapewnia unikalność identyfikatora. Przykładami przestrzeni nazw są ISBN (Międzynarodowy Standardowy Numer Książki) i inne.
  3. Przestrzeń specyficzna dla nazw (NSS): Jest to ciąg znaków, który jednoznacznie identyfikuje zasób w określonej przestrzeni nazw. Sam identyfikator nie przekazuje żadnych informacji na temat lokalizacji lub sposobu dostępu do zasobu.

Przykładowo, bardzo znana książka wprowadzająca w systemy komputerowe CSAPP ma swój numer ISBN reprezentowany jako URN urn:isbn:9780134092669.

URN-y są często używane w różnych standardowych protokołach, takich jak asercje w protokole SAML, które odpowiadają URN-owi urn:oasis:names:tc:SAML:2.0:assertion.

W inżynierii oprogramowania możemy również definiować URN-y dla konkretnych celów w naszych własnych systemach zgodnie z zasadami nazewnictwa URN. Na przykład, w Logto, aby włączyć Organizację, musisz dodać zakres urn:logto:scope:organizations do konfiguracji podczas korzystania z SDK. Każda Organizacja ma także swoje własne dedykowane URN urn:logto:organization:{orgId}.

Podsumowanie

Związek między URI, URL i URN można zilustrować za pomocą poniższego diagramu Venna:

Relations

URI, URL i URN mogą być używane do identyfikacji różnych zasobów, ale tylko URL może precyzyjnie lokalizować położenie zasobu.

URI i URL mogą obsługiwać różne schematy, takie jak HTTP, HTTPS, FTP, ale URN można uznać za wspierający jedynie schemat urn.

Wszystkie URL-e lub URN-y są URI, ale nie wszystkie URI są URL-ami lub URN-ami.