En aquest tema, explorarem els principis fonamentals que defineixen l'arquitectura REST (Representational State Transfer). Aquests principis són essencials per dissenyar i desenvolupar APIs que siguin escalables, mantenibles i fàcils d'utilitzar.
Què és REST?
REST és un estil arquitectònic per a sistemes distribuïts com el web. Va ser introduït per Roy Fielding en la seva tesi doctoral l'any 2000. REST es basa en un conjunt de principis que defineixen com els recursos són accedits i manipulats a través d'Internet.
Principis Fonamentals de REST
- Client-Servidor
El model REST separa les responsabilitats entre el client i el servidor:
- Client: És responsable de la interfície d'usuari i de la interacció amb l'usuari final.
- Servidor: Gestiona l'emmagatzematge de dades i la lògica empresarial.
Aquesta separació permet que els clients i els servidors evolucionin de manera independent.
- Interfície Uniforme
Una interfície uniforme simplifica i desacobla l'arquitectura, permetent que cada part del sistema pugui evolucionar de manera independent. Els quatre principis de la interfície uniforme són:
- Identificació de recursos: Els recursos són identificats per URIs (Uniform Resource Identifiers).
- Manipulació de recursos a través de representacions: Els clients interactuen amb els recursos mitjançant representacions (com JSON o XML).
- Missatges autodescriptius: Cada missatge conté tota la informació necessària per comprendre'l.
- Hipermèdia com a motor de l'estat de l'aplicació (HATEOAS): Els clients descobreixen les accions disponibles a través dels enllaços proporcionats en les respostes.
- Sense estat (Stateless)
Cada petició del client al servidor ha de contenir tota la informació necessària per entendre i processar la petició. El servidor no ha de mantenir cap estat del client entre peticions. Això simplifica l'escalabilitat del servidor.
- Caché
Les respostes del servidor han de ser explicitament marcades com cachéables o no cachéables. Si una resposta és cachéable, el client pot reutilitzar la resposta per a peticions futures, reduint la càrrega en el servidor i millorant el rendiment.
- Sistema en capes
L'arquitectura REST pot estar composta per diverses capes, cadascuna amb una funció específica. Això permet que les capes intermediàries, com servidors de caché o balancejadors de càrrega, millorin l'escalabilitat i la seguretat del sistema.
- Codi sota demanda (Opcional)
Els servidors poden proporcionar codi executable al client, com scripts JavaScript. Això permet que les funcionalitats es puguin ampliar sense necessitat de canviar el codi del client.
Exemples Pràctics
Exemple 1: Identificació de Recursos
En aquest exemple, /users/123
és l'URI que identifica un recurs específic (un usuari amb l'ID 123).
Exemple 2: Manipulació de Recursos a través de Representacions
{ "id": 123, "name": "John Doe", "email": "[email protected]" }
Aquesta és una representació JSON del recurs identificat per /users/123
.
Exemple 3: Missatges Autodescriptius
POST /users Content-Type: application/json { "name": "Jane Doe", "email": "[email protected]" }
Aquest missatge conté tota la informació necessària per crear un nou usuari.
Exemple 4: Hipermèdia com a Motor de l'Estat de l'Aplicació (HATEOAS)
{ "id": 123, "name": "John Doe", "email": "[email protected]", "links": [ { "rel": "self", "href": "/users/123" }, { "rel": "friends", "href": "/users/123/friends" } ] }
Aquest exemple mostra com els enllaços proporcionen informació sobre les accions disponibles per al recurs.
Exercicis Pràctics
Exercici 1: Identificació de Recursos
Pregunta: Proporciona un URI per accedir a un recurs que representa un llibre amb l'ID 456 en una biblioteca.
Resposta:
Exercici 2: Manipulació de Recursos a través de Representacions
Pregunta: Escriu una representació JSON per a un recurs que representa un llibre amb l'ID 456, títol "El Quixot" i autor "Miguel de Cervantes".
Resposta:
Exercici 3: Missatges Autodescriptius
Pregunta: Escriu un missatge HTTP per actualitzar l'email d'un usuari amb l'ID 123 a "[email protected]".
Resposta:
PUT /users/123 Content-Type: application/json { "email": "[email protected]" }
Conclusió
Els principis bàsics de REST proporcionen una guia clara per dissenyar i desenvolupar APIs que siguin escalables, mantenibles i fàcils d'utilitzar. Comprendre aquests principis és fonamental per a qualsevol desenvolupador que vulgui crear APIs RESTful eficients i efectives. En el proper mòdul, explorarem com aplicar aquests principis en el disseny d'APIs RESTful.
Curs de REST API: Principis de Disseny i Desenvolupament d'APIs RESTful
Mòdul 1: Introducció a les APIs RESTful
Mòdul 2: Disseny d'APIs RESTful
- Principis de disseny d'APIs RESTful
- Recursos i URIs
- Mètodes HTTP
- Codis d'estat HTTP
- Versionat d'APIs
- Documentació d'APIs
Mòdul 3: Desenvolupament d'APIs RESTful
- Configuració de l'entorn de desenvolupament
- Creació d'un servidor bàsic
- Gestió de peticions i respostes
- Autenticació i autorització
- Gestió d'errors
- Proves i validació
Mòdul 4: Bones Pràctiques i Seguretat
- Bones pràctiques en el disseny d'APIs
- Seguretat en APIs RESTful
- Rate limiting i throttling
- CORS i polítiques de seguretat
Mòdul 5: Eines i Frameworks
- Postman per a proves d'APIs
- Swagger per a documentació
- Frameworks populars per a APIs RESTful
- Integració contínua i desplegament