Odkrywanie URI, URL i URN
Ten przewodnik zawiera przegląd URI, URL i URN, wyjaśniając ich różnice oraz przypadki użycia.
Ten przewodnik zawiera przegląd URI, URL i URN, wyjaśniając ich różnice oraz przypadki użycia.
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.
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.
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.
Host: Host określa nazwę domeny lub adres IP serwera, który udostępnia zasoby.
Host w URL to example.logto.io.
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.
Ś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.
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¶m2=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.
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.pdfmailto:[email protected]?subject=Enterprise%20quota%20requestURI 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:
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.
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>
urn.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}.
Związek między URI, URL i URN można zilustrować za pomocą poniższego diagramu Venna:

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.