Avslöjar URI, URL och URN
Denna guide ger en översikt över URI, URL och URN, och förklarar deras skillnader och användningsområden.
När vi utvecklar webbappar behöver vi ofta anropa olika webbtjänster. När vi konfigurerar kommunikationen och anslutningen av olika webbtjänster stöter vi ofta på begreppen URI, URL och URN. Vanligtvis har användare svårt att skilja mellan dem, vilket leder till blandad eller felaktig användning. I den här artikeln kommer vi att ge exempel och förklara skillnaderna mellan dem för att hjälpa alla att bättre förstå dessa koncept och korrekt tolka och använda dem när de läser tekniska bloggar, dokumentation eller kommunicerar med andra ingenjörer.
Vad är en URL?
En URL (Uniform Resource Locator) ger webbplatsadressen eller platsen för resurser på internet. Den används vanligtvis för att ange platsen för webbsidor, filer eller tjänster. En URL ger ett standardiserat format för att komma åt resurser på webben. Den är en nyckelkomponent i webbsurfning, länkning och internetkommunikation.
En URL består av flera delar som tillsammans definierar adressen för resursen och protokollet som används för att komma åt den. Låt oss analysera URL:en nedan som ett exempel och förklara funktionen för varje del en efter en.
-
Scheme: Detta specificerar protokollet eller schemat som används för att komma åt resurser, såsom HTTP (Hypertext Transfer Protocol), HTTPS (HTTP Secure), FTP (File Transfer Protocol) eller andra.
Schemat i URL:en är
https
. -
Host: Värden specificerar domännamnet eller IP-adressen till servern som är värd för resurserna.
Värden i URL:en är
example.logto.io
. -
Port: (Valfritt) Port representerar ett specifikt portnummer på värden som kommer åt resursen. Om ingen port anges, används standardporten för det angivna schemat.
Standardporten för HTTP är 80, medan standardporten för HTTPS är 443.
Porten i URL:en är
8080
. -
Path: (Valfritt) Sökväg indikerar den specifika platsen eller katalogen på servern där resursen finns, vilken kan inkludera kataloger och filnamn.
Sökvägen i URL:en bör vara
/blogs/index.html
. -
Query Parameters: (Valfritt) Frågeparametrar är ytterligare parametrar som skickas till en resurs, vanligtvis använda i dynamiska webbapplikationer. De visas efter sökvägen och separeras av tecknet
?
.Frågeparametrarna i URL:en är
params1=value1¶m2=value2
, som ofta representeras i form av nyckel-värde-par, med par separerade av tecknet&
. I verkliga användningsscenarier krävs ofta kodning för att undvika tecken som mellanslag. -
Fragment Identifier: (Valfritt) Kan också kallas en ankare, används för att lokalisera en specifik position i resursen.
Ankaret i URL:en är
#introduction
.
Dessutom, till exempel, genom att använda filtjänster eller många "Kontakta oss"-knappar på webbsidor länkas till URL:er, som:
ftp://documents.logto.io/files/legal/soc_ii.pdf
mailto:[email protected]?subject=Enterprise%20quota%20request
Vad är en URI?
URI står för "Uniform Resource Identifier". Det är en sträng av tecken som identifierar en specifik resurs, såsom en webbsida, fil eller tjänst. URI ger ett sätt att unikt identifiera och lokalisera resurser med ett standardiserat format.
En URI består huvudsakligen av två komponenter:
- Scheme: Anger protokollet eller schemat som används för att komma åt resursen.
- Resource Identifier: Identifierar den specifika resurs som nås eller refereras. Formatet på resursidentifieraren beror på det använda schemat.
Ur ett grammatiskt perspektiv följer URI:er mestadels samma format som URL:er, som specificeras i RFC 3986.
Även om detta URI-format liknar det för URL:er, garanterar det inte åtkomst till någon resurs på webben. Att använda detta format kan minska namnkonflikter i namnrymden.
I avsnittet ovan presenterade vi URL:er, som inte bara identifierar en resurs utan också hjälper till att lokalisera den resursen. Så, faktiskt, URL:er är en riktig delmängd av URI:er.
Vad är en URN?
URN kanske inte är så vanligt som URL och URI. Det står för "Uniform Resource Name", och dess syfte är att identifiera resurser på ett beständigt sätt, även om sådana resurser inte längre finns.
Till skillnad från en URL, ger en URN ingen information om hur man lokaliserar resursen; den identifierar den endast, likt en ren URI. Specifikt är en URN en typ av URI med schemat "urn" och har följande struktur, enligt RFC 2141:
<URN>:<NID>:<NSS>
- URN: Vanligen
urn
. - Namespace Identifier (NID): Representerar ett unikt namnrymd eller identifieringssystem som definierar och hanterar URN. Det ger sammanhang och säkerställer identifierarens unikhet. Exempel på namnrymder inkluderar ISBN (International Standard Book Number), etc.
- Namespace Specific String (NSS): Det är en teckensträng som unikt identifierar en resurs inom den specificerade namnrymden. Själva identifieraren ger ingen information om resursens plats eller åtkomstmetod.
Till exempel, en mycket känd bok som introducerar datasystem CSAPP har sitt ISBN-nummer representerat som URN urn:isbn:9780134092669
.
URN:er används ofta i olika standardprotokoll, såsom påståendet i SAML-protokollet, vilket motsvarar URN urn:oasis:names:tc:SAML:2.0:assertion
.
Inom mjukvaruteknik kan vi också definiera URN:er för specifika ändamål i våra egna system enligt URN-namngivningsreglerna. Till exempel, i Logto, för att aktivera Organization, behöver du lägga till urn:logto:scope:organizations
-området i konfig när du använder SDK. Varje Organization har också sin egen dedikerade URN urn:logto:organization:{orgId}
.
Slutsats
Förhållandet mellan URI, URL och URN kan illustreras med följande venndiagram:
URI, URL och URN kan alla användas för att identifiera olika resurser, men endast URL kan exakt lokalisera resursens position.
URI och URL kan stödja olika scheman, såsom HTTP, HTTPS, FTP, men URN kan anses endast stödja urn
-schemat.
Alla URL:er eller URN:er är URI:er, men inte alla URI:er är URL:er eller URN:er.