Indipendente dall'implementazione di un negozio con valore-chiave o qualsiasi altra cosa: puoi usare HATEOAS per descrivere la tua api. Questo arricchisce le semplici informazioni sulla risorsa con meta -informazioni su cosa fare con la tua API. Quindi nel tuo esempio una chiamata a base fornisce una raccolta di chiavi e i loro valori:
GET /baseurl/
ti fornisce un set di risultati:
[
{
"links": {
"self": {
"href": "http://www.yoursite/base"
},
"item": [
{
"href": "http://www.yoursite/base/key1"
},
{
"href": "http://www.yoursite/base/key2"
},
{
"href": "http://www.yoursite/base/key3"
}
]
},
"content": [
{
"key": "key1",
"value": "value1",
"links": [
{
"self": {
"href": "http://www.yoursite/base/key1"
}
}
]
},
{
"key": "key2",
"value": "value2",
"links": [
{
"self": {
"href": "http://www.yoursite/base/key2"
}
}
]
},
{
"key": "key3",
"value": "value3",
"links": [
{
"self": {
"href": "http://www.yoursite/base/key3"
}
}
]
}
]
}
]
Un semplice GET
contro il tuo baseurl
mostra un elenco di elementi restituiti. Ciascuno con un collegamento (almeno) al singolo elemento (o più se si desidera correlare più chiavi ad altre risorse). Da quel punto in cui io, come consumatore, so che esiste una percentuale di risorse key3
dietro l'URL http://www.yoursite/base/key3
. Analogamente, so che potrei (eventualmente) usare i tipici verbi HTTP (HEAD, GET, PUT, POST, DELETE, PATCH). Tuttavia, posso interrogare tale ressurce per le sue capacità tramite OPZIONI -Richiesta. La sua risposta conterrebbe un Allow
-Section, che mostra i verbi consentiti:
Allow: OPTIONS, GET, HEAD, POST, PUT, DELETE
Se implementato in questo modo, la tua API diventa molto intuitiva e autoesplicativa (indipendente dalle risorse che offri).