I principi REST sono descritti qui:
Un aspetto di REST Sono confuso sulla separazione dei principi REST e delle implementazioni REST.
Ad esempio, so che REST ha i seguenti principi:
- Architettura del server client
- apolidia
- Cache
- Sistema stratificato
-
Interfaccia uniforme
- Identificazione delle risorse nelle richieste
- Manipolazione delle risorse tramite rappresentazioni
- Messaggi di auto-descrizione
- Hypermedia come motore dello stato dell'applicazione (HATEOAS)
Tuttavia, molte implementazioni HTTP utilizzano URL per descrivere a quale risorsa si riferiscono e utilizzano metodi HTTP standard (ad es. OPZIONI, GET, PUT, POST e DELETE), che viene utilizzato in particolari modi.
Ad esempio:
-
GET /books/2
è usato per recuperare la risorsa n. 2 del libro
-
PUT /books
è usato per creare una risorsa libro -
DELETE /books/2
per eliminare il libro n. 2.
Ma questa è solo un'implementazione di REST, poiché non ho potuto vedere ciò descritto nella specifica REST originale: link
Ad esempio, può anche essere considerato REST:
Ottieni il libro n. 5:
POST http://example.com/api
{
"action": "fetch",
"resource": "book",
"id": "5"
}
Crea un libro:
POST http://example.com/api
{
"action": "create",
"resource": "book",
"title": "Jack and the Beanstalk",
"Author": "John Smith"
}
Ottieni il libro n. 5 e il genere n. 10
POST http://example.com/api
[
{
"action": "fetch",
"resource": "book",
"id": "5"
},
{
"action": "fetch",
"resource": "genre",
"id": "7"
}
]
Si noti che tutti e 5 i principi non vengono violati, nonostante io stia utilizzando POST
per tutti gli URL e sto utilizzando il corpo della richiesta anziché l'URL per identificare le singole risorse.
Pertanto, questo è ancora tecnicamente REST?