Il concetto di REST deriva da una dissertazione del 2000 di Roy Fielding, uno dei più importanti sviluppatori di protocolli web. Fielding descrive in forma astratta l’architettura alla base del World Wide Web (il protocollo HTTP, i parser HTML e XML, le applicazioni web e quelle server). Fondamentalmente l’architettura REST non dipende da protocolli specifici. La sua caratteristica principale risiede in risorse che devono essere soddisfatte secondo i seguenti requisiti di Fielding:
- Indirizzabilità: ogni risorsa, per esempio una prenotazione, un prodotto o un articolo, deve poter essere identificata tramite un Unique Resource Identifier (URI).
- Interfaccia unica: deve essere possibile accedere a ogni risorsa in modo semplice e unitario con l’aiuto di metodi standard. Per esempio metodi HTTP come GET, POST o PUT.
- Struttura client-server: in generale vale il principio client-server, secondo il quale un server mette a disposizione un servizio, che se necessario può essere richiesto da un client.
- Assenza di stato: la comunicazione tra server e client non presenta alcuno stato. Questo significa che tutti i messaggi scambiati contengono tutte le informazioni necessarie per poterli leggere. Il server non memorizza informazioni aggiuntive tra i due messaggi come per esempio sotto forma di sessioni. L’assenza di uno stato rende i servizi REST altamente scalabili, in quanto le richieste in entrata possono essere distribuite facilmente ai diversi server tramite bilanciamento del carico.
- Diverse rappresentazioni delle risorse: ogni risorsa può avere diverse forme di visualizzazione. In base a cosa il client richieda, deve poter essere consegnato in diversi linguaggi o formati come HTML, JSON o XML.
- Hypermedia: la messa a disposizione delle risorse avviene tramite hypermedia, per esempio sotto forma di attributi “href”- e “src” nei documenti HTML o tramite elementi JSON e XML, definiti per le rispettive interfacce. Di conseguenza il client usa un’API REST esclusivamente tramite URL, secondo il principio “Hypermedia as the Engine of Application State (HATEOAS)”, che il server mette a disposizione, senza aver bisogno di alcuna nozione aggiuntiva sull’interfaccia.
Questi requisiti rigorosi dell’architettura REST consentono lo sviluppo di servizi ben strutturati, che sono semplici da integrare e comunicano tramite un protocollo unitario HTTP. Grazie alla struttura orientata sulla base di risorse nell’idea di un servizio web REST rientra anche la ricerca di protocolli specifici per applicazioni, necessaria per alternative di questo tipo come SOAP.