Qual è il punto di collegamento rel = "self" in un'API REST?


11

Vedo spesso quanto segue nei documenti HTML

<link rel="self" href="http://example.com/something">

o come questo in JSON

 link: {
     rel="self",
     href="http://example.com/something"
 }

o in XML

 <atom:link rel="self" href="http://example.com/something" />

Quindi ho avuto alcune domande:

  1. Perché includere questo link? Che vantaggio porta? (Per favore, dimmi che c'è una ragione e non è solo un talismano da "buone pratiche")
  2. Come dovrei sfruttare questo link nei miei clienti? Quali sono i casi d'uso di questo link?
  3. Quando non dovrei usare questo link? Quando è inutile includerlo?

3
"Fare clic qui per aggiungere questa pagina ai segnalibri" sarebbe un caso d'uso in cui è possibile utilizzare il riferimento "self". Più in generale, poiché REST è senza stato, il server non ha modo di sapere da dove provenga la richiesta, quindi è del tutto possibile che la pagina a cui ritorna debba conoscere il proprio URI.
Roger,

Sembra che questo commento farebbe una risposta abbastanza buona :)
Mike Chamberlain

Risposte:


8

È un riferimento automatico, quindi il client saprà che l'IRI ( http://example.com/something) è un identificatore della risorsa di cui si occupa la rappresentazione.

Può essere importante quando la tua risorsa può avere più identificatori, ad esempio http://example.com/users/1e http://example.com/users/1?fields="name"può identificare la stessa risorsa, ma un GET su di essi può comportare rappresentazioni diverse.

Con tipi di media come HAL lo usi anche per identificare le risorse incorporate. Per esempio:

{
    "nick": "John",
    "_embedded": {
        "cars": {
            "items": [
                //...
            ],
            "_links": {
                "self": {
                    "href": "http://example.com/users/john/cars"
                }
            }
        }
    },
    "_links": {
        "self": {
            "href": "http://example.com/users/john"
        }
    }
}

Cos'è l'IRI? Qualcuno di questi en.wikipedia.org/wiki/IRI ?
Marian Paździoch,

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.