• uri
  • url
  • urn

URI:n, URL:n ja URN:n paljastaminen

Tämä opas tarjoaa yleiskatsauksen URI:sta, URL:sta ja URN:sta selittäen niiden erot ja käyttötarkoitukset.

Darcy Ye
Darcy Ye
Developer

Kun kehitämme verkkosovelluksia, meidän on usein kutsuttava erilaisia verkkopalveluita. Kun konfiguroidaan eri verkkopalveluiden viestintää ja liitäntää, kohtaamme usein käsitteitä URI, URL ja URN. Käyttäjien on yleensä vaikea erottaa niitä toisistaan, mikä johtaa sekoitettuja tai virheellisiä käyttöjä. Tässä artikkelissa annamme esimerkkejä ja selitämme niiden erot auttaaksemme kaikkia ymmärtämään nämä käsitteet paremmin ja tulkitsemaan ja käyttämään niitä oikein teknisiä blogeja lukiessa, dokumentaatiota tutkiessa tai kommunikoidessa muiden insinöörien kanssa.

Mikä on URL?

URL (Uniform Resource Locator) tarjoaa verkkosivuston osoitteen tai sijainnin Internetissä. Sitä käytetään tyypillisesti määrittämään verkkosivujen, tiedostojen tai palvelujen sijainti. URL tarjoaa standardoidun muodon resurssien käyttämiseen verkossa. Se on keskeinen osa verkkoselausta, linkittämistä ja Internet-viestintää.

URL koostuu useista osista, jotka yhdessä määrittävät resurssin osoitteen ja protokollan, jota käytetään sen saavuttamiseen. Puretaan alla oleva URL esimerkissämme ja selitetään kunkin osan toiminta yksitellen.

  1. Scheme: Tämä määrittää protokollan tai järjestelmän, jota käytetään resurssien saavuttamiseen, kuten HTTP (Hypertext Transfer Protocol), HTTPS (HTTP Secure), FTP (File Transfer Protocol) tai muut.

    Scheme URL:ssa on https.

  2. Host: Host määrittää palvelimen isäntänimen tai IP-osoitteen, joka isännöi resursseja.

    Host URL:ssa on example.logto.io.

  3. Portti: (Valinnainen) Portti edustaa isännässä olevaa tiettyä porttinumeroa, jolla resurssia käytetään. Jos porttia ei määritetä, se oletetaan olevan vakioportti käsitellylle protokollalle.

    HTTP:n oletusportti on 80, kun taas HTTPS:n oletusportti on 443.

    Portti URL:ssa on 8080.

  4. Polku: (Valinnainen) Polku osoittaa tietyn sijainnin tai hakemiston palvelimella, jossa resurssi sijaitsee, mikä voi sisältää hakemistoja ja tiedostonimiä.

    Polku URL:ssa pitäisi olla /blogs/index.html.

  5. Kyselyparametrit: (Valinnainen) Kyselyparametrit ovat lisäparametreja, jotka välitetään resurssille, tyypillisesti käytetty dynaamisissa verkkosovelluksissa. Ne näkyvät polun jälkeen ja ne erotetaan ?-symbolilla.

    Kyselyparametrit URL:ssa ovat params1=value1&param2=value2, joka usein esitetään avain-arvo-pareina, ja parit erotetaan &-symbolilla. Todellisissa käyttöskenaarioissa koodaus on usein tarpeen, jotta vältytään sellaisten merkkien kuin välilyönnin käytöltä.

  6. Osasidonnainen: (Valinnainen) Se voi olla myös ankkuri, jota käytetään tietyn sijainnin löytämiseen resurssissa.

    Ankkuri URL:ssa on #introduction.

Lisäksi tiedostopalveluja käytettäessä tai monia "Ota yhteyttä" -painikkeita verkkosivuilla yhdistetään URL-osoitteisiin, kuten:

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

Mikä on URI?

URI tarkoittaa "Uniform Resource Identifier". Se on merkkijono, joka tunnistaa tietyn resurssin, kuten verkkosivun, tiedoston tai palvelun. URI tarjoaa tavan tunnistaa ja paikantaa resurssit ainutlaatuisesti standardoidun muodon avulla.

URI koostuu pääasiassa kahdesta komponentista:

  1. Scheme: Ilmoittaa protokollan tai järjestelmän, jolla resurssia käytetään.
  2. Resurssin tunniste: Tunnistaa tietyn resurssin, johon viitataan tai jota käytetään. Resurssin tunnisteen muoto riippuu käytetystä järjestelmästä.

Kieliteknisestä näkökulmasta URI:t noudattavat enimmäkseen samaa muotoa kuin URL:t, kuten määritelty RFC 3986:ssa.

Vaikka tämä URI-muoto on samankaltainen kuin URL:it, se ei takaa pääsyä mihinkään verkon resurssiin. Tämän muodon käyttö voi vähentää nimiavaruuden nimikonflikteja.

Yllä olevassa osassa esittelimme URL:t, jotka eivät ainoastaan tunnista resurssia vaan myös auttavat löytämään resurssin. Joten itse asiassa URL:t ovat URI:n oikea osajoukko.

Mikä on URN?

URN ei ole ehkä yhtä yleinen kuin URL ja URI. Se tarkoittaa "Uniform Resource Name", ja sen tarkoitus on tunnistaa resurssit pysyvällä tavalla, vaikka tällaisia resursseja ei enää olisi olemassa.

Toisin kuin URL, URN ei anna mitään tietoa resurssin sijainnista; se vain tunnistaa sen, aivan kuten puhtaasti URI. Tarkemmin sanottuna URN on URI-tyyppi, jonka skeema on "urn" ja jolla on seuraava rakenne, kuten RFC 2141:ssa on kuvailtu:

<URN>:<NID>:<NSS>

  1. URN: Yleensä urn.
  2. Namespace Identifier (NID): Edustaa ainutlaatuista nimiavaruutta tai tunnistusjärjestelmää, joka määrittelee ja hallitsee URN:ia. Se antaa kontekstin ja varmistaa tunnisteen ainutlaatuisuuden. Esimerkkejä nimiavaruuksista ovat ISBN (International Standard Book Number) jne.
  3. Namespace Specific String (NSS): Se on merkkijono, joka yksilöi resurssin spesifisessä nimiavaruudessa. Tunniste ei itsessään välitä mitään tietoa resurssin sijainnista tai pääsymenetelmästä.

Esimerkiksi erittäin kuuluisalla kirjalla, joka esittelee tietokonejärjestelmiä CSAPP, on ISBN-numero, joka esitetään URN:na urn:isbn:9780134092669.

URN:ja käytetään usein erilaisissa standardiprotokollissa, kuten SAML-protokollan väittämissä, jotka vastaavat URN:ia urn:oasis:names:tc:SAML:2.0:assertion.

Ohjelmistosuunnittelussa voimme myös määritellä URN:t omia tarkoituksiamme varten omissa järjestelmissämme URN-nimeämissääntöjen mukaisesti. Esimerkiksi Logto:ssa Organisaation mahdollistamiseksi sinun on lisättävä urn:logto:scope:organizations -toiminnallisuus määritykseen, kun käytät SDK:ta. Jokaisella Organisaatiolla on myös oma omistettu URN urn:logto:organization:{orgId}.

Yhteenveto

IRI:n, URL:n ja URN:n välistä suhdetta voidaan kuvata seuraavassa Venn-diagrammissa:

Suhteet

URI, URL ja URN voidaan kaikki käyttää eri resurssien tunnistamiseen, mutta vain URL voi tarkasti paikantaa resurssin sijainnin.

URI ja URL voivat tukea erilaisia järjestelmiä, kuten HTTP, HTTPS, FTP, mutta URN voidaan katsoa tukevan vain "urn"-järjestelmää.

Kaikki URL:t tai URN:t ovat URI:ita, mutta kaikki URI:t eivät ole URL:ita tai URN:ita.