Requisiti
Potrebbe essere utile la lettura di:
Introduzione
- URI - Uniform Resource Identifier
- URL - Uniform Resource Locator
- URN - Uniform Resource Name
L'URI è un modo generico ed estendibile per identificare risorse. Gli URL e gli URN, invece, specificano come identificarle.
In tal senso possiamo considerarli come "specializzazioni" degli URI o più semplicemente solo URI.
Gli URL identificano una risorsa attraverso l'indicazione su come ottenerla/prelevarla dalla rete o in altri termini in base alla "posizione" della risorsa.
Gli URN identificano una risorsa attraverso un nome. A differenza degli URL non contengono informazione su come prelevarla dalla rete. L'obiettivo degli URN è quello di creare un identificatore per la risorsa che sia persistente e indipendente dalla posizione.
Ad es. se una risorsa identificata da un URL A, cambia posizione e diventa raggiungibile dall'URL B allora attraverso il suo URN sarà comunque raggiungibile anche se dall'URL A non lo sarà più.
Una descrizione più dettagliata degli URI chiarirà tutto.
URI
A livello più generale, un identificatore URI è una stringa che ha la sintassi seguente:
(scheme ':')?scheme-specific-part('#' fragment)?
dove scheme:
e #fragment
sono opzionali e scheme-specific-part
è sempre presente.
Come detto poco sopra, l'URI è un modo generico per identificare risorse. Il modo specifico è indicato su scheme
(lo schema). Ogni modo specifico, inoltre, è libero di avere una sua sintassi (o modo per identificare risorse). Questa è indicata al posto di scheme-specific-part
.
Diamo un po' di definizioni:
- un URI è detto assoluto se specifica lo schema. E' relativo altrimenti.
- un URI è detto opaco se è un URI assoluto e la parte specifica dello schema non inizia con /
- un URI è detto gerarchico se è vera una delle 2 condizioni:
- è un URI relativo (non ha schema)
- è un URI assoluto e la parte specifica dello schema inizia con /
Un URI gerarchico può essere rappresentato in questo modo:
(scheme ':')?(//authority)?(path)?('?' query)?('#' fragment)?
dove authority sta per:
(user-info '@')?host(:port)?
Operazioni sugli URI: risoluzione, normalizzazione, relativizzazione
Per normalizzazione si intende il processo di rimozione dei segmenti "." e ".." dai segmenti di un URI gerarchico. Il "." è semplicemente rimosso, mentre ".." è rimosso solo se è preceduto da un segmento diverso da "..".
Ad esempio normalizzare l'URI http://www.example.com/uno/./due/tre/../pagina.html
restituisce http://www.example.com/uno/due/pagina.html
L'operazione di risoluzione di un URI consiste nell'ottenere un URI assoluto a partire da un altro URI assoluto e un URI relativo.
Ad esempio: risolvere l'URI relativo due/pagina.html
rispetto all'URI base assoluto http://www.example.com/uno/
restituisce http://www.example.com/uno/due/pagina.html
La relativizzazione è l'operazione inversa della risoluzione. Da un URI assoluto e un URI base si ottiene un URI relativo.
Ad esempio: relativizzare l'URI http://www.example.com/uno/due/pagina.html
rispetto all'URI base http://www.example.com/uno
restituisce due/pagina.html
0 commenti:
Posta un commento