Una risorsa è la cosa con cui stai lavorando. Ad esempio, se si dispone di un'API per la commutazione di una determinata lampada, la risorsa è la lampada stessa. Una risorsa può essere fisica (ad es. Lampada, persona) o non fisica (ad esempio articolo, ruolo, una riga nel database), una risorsa può essere primaria (ad es. Equilibrio) o derivata (ad esempio transazione). Una risorsa può fare riferimento a un'entità specifica (ad esempio la quinta lampada installata in questo portalampada) oppure può riferirsi a un ruolo che si associa a entità diverse in momenti diversi (ad esempio, la lampada attualmente installata, la lampada installata il 5 agosto 2008) oppure può mappare a più entità (ad es. tutte le lampade in casa).
La rappresentazione di una risorsa è il modo in cui il tuo servizio comunica lo stato della risorsa, ad es. XML, JSON che rappresenta lo stato della lampada.
Nell'API REST, una risorsa viene identificata da un identificativo uniforme (ad esempio URI). Una singola risorsa può avere più rappresentazioni, nell'API REST HTTP indichi normalmente la rappresentazione che si desidera utilizzare nelle intestazioni HTTP Content-Type e Accept.
Una delle principali realizzazioni nell'architettura del server client è che non puoi portare la risorsa al client e non dovresti provare a farlo come fai tu. Invece, nell'API REST, puoi manipolare da remoto una risorsa trasferendo le rappresentazioni della risorsa. Pensa a questo, FedEx non è la lampada in modo che il client possa manipolare direttamente la lampada, ma piuttosto il servizio crea una rappresentazione XML / JSON / protobuf / CSV della lampada e il client invia una rappresentazione delle manipolazioni desiderate. Il servizio quindi manipola lo stato effettivo della lampada per conto del cliente o respinge la richiesta, ad esempio se il client non è autorizzato a eseguire le operazioni sulla lampada. Questo potrebbe sembrare ovvio / spaccare i capelli, ma la cosa importante da notare è che poiché la rappresentazione non è la risorsa stessa, la rappresentazione può non essere aggiornata con lo stato della risorsa.