Altro
Cos'è esattamente la programmazione RESTful?
Cos'è esattamente la programmazione RESTful?
per i motori di ricerca: cos'è la programmazione RESTful REST -->
3909
3
REST è il principio architettonico di base del web. La cosa sorprendente del web è il fatto che client (browser) e server possono interagire in modi complessi senza che il client sappia nulla in anticipo sul server e sulle risorse che ospita. Il vincolo chiave è che il server e il client devono essere entrambi d'accordo sul media usato, che nel caso del web è HTML.
Un'API che aderisce ai principi di REST non richiede che il client sappia nulla della struttura dell'API. Piuttosto, il server deve fornire qualsiasi informazione di cui il client ha bisogno per interagire con il servizio. Un formulario HTML è un esempio di questo: Il server specifica la posizione della risorsa e i campi richiesti. Il browser non sa in anticipo dove inviare le informazioni, e non sa in anticipo quali informazioni inviare. Entrambe le forme di informazione sono interamente fornite dal server. (Questo principio è chiamato HATEOAS: Hypermedia As The Engine Of Application State.
Quindi, come si applica questo a HTTP, e come può essere implementato in pratica? HTTP è orientato intorno a verbi e risorse. I due verbi di uso comune sono
GET
ePOST
, che penso tutti riconosceranno. Tuttavia, lo standard HTTP ne definisce molti altri comePUT
eDELETE
. Questi verbi vengono poi applicati alle risorse, secondo le istruzioni fornite dal server.Per esempio, immaginiamo di avere un database di utenti gestito da un servizio web. Il nostro servizio usa un hypermedia personalizzato basato su JSON, per il quale assegniamo il mimetype
application/json+userdb
(potrebbe esserci anche unapplication/xml+userdb
eapplication/whatever+userdb
- molti tipi di media possono essere supportati). Il client e il server sono stati entrambi programmati per capire questo formato, ma non sanno nulla l'uno dell'altro. Come sottolinea Roy Fielding:Una richiesta per la risorsa base
/
potrebbe restituire qualcosa del genere:Richiesta
Risposta
Sappiamo dalla descrizione dei nostri media che possiamo trovare informazioni su risorse correlate da sezioni chiamate "link". Questo si chiama Controlli ipermediali. In questo caso, possiamo dire da tale sezione che possiamo trovare una lista di utenti facendo un'altra richiesta per
/user
:Richiesta
Risposta
Possiamo capire molto da questa risposta. Per esempio, ora sappiamo che possiamo creare un nuovo utente facendo
POST
a/user
:Richiesta
Risposta
Sappiamo anche che possiamo cambiare i dati esistenti:
Richiesta
Risposta
Notate che stiamo usando diversi verbi HTTP (
GET
,PUT
,POST
,DELETE
ecc.) per manipolare queste risorse, e che l'unica conoscenza che presumiamo da parte del client è la nostra definizione dei media.Ulteriori letture:
(Questa risposta è stata oggetto di una discreta quantità di critiche per aver mancato il punto. Per la maggior parte, questa è stata una critica giusta. Ciò che ho originariamente descritto era più in linea con il modo in cui REST era solitamente implementato qualche anno fa quando ho scritto questo, piuttosto che il suo vero significato. Ho rivisto la risposta per rappresentare meglio il vero significato).
REST utilizza i vari metodi HTTP (principalmente GET/PUT/DELETE) per manipolare i dati.
Piuttosto che usare un URL specifico per eliminare un metodo (ad esempio,
/user/123/delete
), si dovrebbe inviare una richiesta DELETE all'URL/user/[id]
, per modificare un utente, per recuperare le informazioni su un utente si invia una richiesta GET a/user/[id]
Per esempio, invece un insieme di URL che potrebbe assomigliare ad alcuni dei seguenti.
Si usano i "verbi" HTTP e si ha..
È una programmazione in cui l'architettura del vostro sistema si adatta allo stile REST delineato da Roy Fielding nella sua tesi. Poiché questo è lo stile architettonico che descrive il web (più o meno), molte persone sono interessate ad esso.
Risposta bonus: No. A meno che tu non stia studiando l'architettura del software come accademico o progettando servizi web, non c'è davvero alcuna ragione per aver sentito il termine.