Que és REST?
REST no és un protocol ni un estàndard, sinó un conjunt de límits de l'arquitectura.
Quan el client envia una sol·licitud a través d'una API RESTful, aquesta transfereix una representació de l'estat del recurs a qui l'hagi sol·licitat o a l'altre extrem. El lliurament d'aquesta informació es fa mitjançant HTTP en un d'aquests formats JSON, HTML, XLT, Python, PHP o text sense format. JSON actualment és el llenguatge més popular que permet que tant màquines com persones el puguin comprendre.
També és necessari tenir en consideració altres aspectes. Les capçaleres i els paràmetres també són importants en els mètodes HTTP d'una sol·licitud HTTP d'una API RESTful, ja que contindrà informació d'identificació important, metadades, autorització... Hi haurà capçaleres tant de sol·licitud com de resposta, però cadascun tindrà la seva funcionalitat.
Perquè una API es consideri RESTful, cal que compleixi els següents criteris:
- Arquitectura client-servidor composta per clients, servidors i recursos, amb la gestió de sol·licituds via HTTP
- Ha d'estar orientada a recursos i utilitzarà les operacions estàndard dels verbs HTTP
- Farà servir l'URL com identificador únic dels recursos
- Comunicació entre el client i el servidor sense estat, i això implica que no s'emmagatzema la informació del client entre les sol·licituds GET i que cadascuna d'elles és independent de la resta i està desconnectada de la resta. Això implica que no s'han d'utilitzar cookies ni variables de sessió. La comunicació ha de ser stateless
- Les dades han de poder emmagatzemar-se en cache per permetre optimitzar les interaccions entre el client i el servidor
- Els elements han de tenir una interfície uniforme, perquè la informació es transfereixi de forma estandarditzada, això implica que s'han de complir les següents condicions:
- Els recursos sol·licitats han de ser identificable e independents de les representacions enviades al client.
- El client ha de poder manipular els recursos a través de la representació que rep, ja que contindrà prou informació per permetre-ho.
- Els missatges, auto descriptius que s'envien al client han de contenir informació necessària per descriure com processar-la.
- Ha de contenir hipertext o hipermèdia, de forma que quan el client accedeixi a algun recurs ha de poder utilitzar els hipervincles per cercar la resta d'accions que es necessiten.
- Un sistema de capes organitza en jerarquies invisibles per al client cadascun dels servidors (seguretat, equilibri de càrrega, etc.)
Si bé les API REST han de complir amb aquests paràmetres, també tenim la possibilitat d'emprar un protocol definit anteriorment anomenat SOAP (protocol simple d'acces a objectes), que té uns altres requisits específics, com missatgeria XML, la seguretat i el compliment integrat de les operacions, que en general el fan més lent i pesat.
REST, en canvi, és un conjunt de pautes que es poden implementar segons sigui necessari. Per aquesta raó les API REST són més ràpides i lleugeres, tenen una major capacitat d'ajustar-se i, per tant, resulten ideals per al IoT i el desenvolupament d'aplicacions mòbils.