En aquest tema, explorarem els principis fonamentals que guien el disseny d'APIs RESTful. Aquests principis asseguren que les APIs siguin fàcils d'utilitzar, mantenir i escalar. A més, proporcionen una base sòlida per a la interoperabilitat entre diferents sistemes.

  1. Uniformitat de la Interfície

1.1. Identificació de Recursos

  • URI Únics: Cada recurs ha de tenir un URI únic que el representi. Per exemple, en una API de gestió de llibres, un llibre específic podria tenir un URI com /llibres/123.
  • Nouns, no Verbs: Els URIs han de representar recursos (noms) i no accions (verbs). Per exemple, utilitza /usuaris/123 en lloc de /obtenirUsuari/123.

1.2. Manipulació de Recursos a través de Representacions

  • Formats de Representació: Els recursos poden ser representats en diferents formats com JSON, XML, etc. El client i el servidor han de poder negociar el format mitjançant l'encapçalament Accept.
  • Estat del Recurso: Les operacions sobre els recursos (GET, POST, PUT, DELETE) han de modificar l'estat del recurs representat.

1.3. Auto-descriptivitat dels Missatges

  • Encapçalaments HTTP: Utilitza encapçalaments HTTP per proporcionar informació addicional sobre la petició o resposta, com el tipus de contingut (Content-Type) o la longitud del contingut (Content-Length).
  • HATEOAS (Hypermedia As The Engine Of Application State): Les respostes han de contenir enllaços a altres recursos relacionats, permetent la navegació a través de l'API.

1.4. Gestió de l'Estat de l'Aplicació

  • Estat Sense Sessió: 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 entre peticions.
  • Estat del Client: Si cal mantenir l'estat del client, aquest ha de ser emmagatzemat al client i enviat amb cada petició, per exemple, mitjançant cookies o tokens.

  1. Utilització de Mètodes HTTP

2.1. GET

  • Lectura de Recursos: Utilitza GET per obtenir representacions de recursos. GET ha de ser segur i idempotent, és a dir, no ha de modificar l'estat del recurs i ha de retornar el mateix resultat si es crida múltiples vegades.

2.2. POST

  • Creació de Recursos: Utilitza POST per crear nous recursos. POST no és idempotent, ja que cada crida pot crear un nou recurs.

2.3. PUT

  • Actualització de Recursos: Utilitza PUT per actualitzar un recurs existent. PUT ha de ser idempotent, és a dir, múltiples crides amb el mateix contingut han de produir el mateix resultat.

2.4. DELETE

  • Eliminació de Recursos: Utilitza DELETE per eliminar un recurs. DELETE ha de ser idempotent, és a dir, múltiples crides han de produir el mateix resultat (el recurs ja no existeix).

2.5. PATCH

  • Modificació Parcial de Recursos: Utilitza PATCH per modificar parcialment un recurs. PATCH no és necessàriament idempotent.

  1. Codis d'Estat HTTP

3.1. 2xx Success

  • 200 OK: La petició ha estat processada correctament.
  • 201 Created: Un nou recurs ha estat creat.
  • 204 No Content: La petició ha estat processada correctament, però no hi ha contingut a retornar.

3.2. 4xx Client Errors

  • 400 Bad Request: La petició és invàlida.
  • 401 Unauthorized: La petició requereix autenticació.
  • 403 Forbidden: El servidor ha entès la petició, però es nega a autoritzar-la.
  • 404 Not Found: El recurs no ha estat trobat.

3.3. 5xx Server Errors

  • 500 Internal Server Error: Hi ha hagut un error al servidor.
  • 503 Service Unavailable: El servidor no està disponible temporalment.

  1. Versionat d'APIs

4.1. En el URI

  • Exemple: /v1/llibres/123

4.2. En l'Encapçalament

  • Exemple: Accept: application/vnd.myapi.v1+json

  1. Documentació d'APIs

5.1. Swagger/OpenAPI

  • Descripció: Utilitza Swagger o OpenAPI per documentar l'API de manera clara i estructurada.

5.2. Exemples i Casos d'Ús

  • Exemples de Peticions i Respostes: Proporciona exemples concrets de com fer peticions i quines respostes esperar.

Exercici Pràctic

Enunciat

Dissenya una API RESTful per a una aplicació de gestió de tasques. Defineix els recursos, els URIs, els mètodes HTTP i els codis d'estat que utilitzaràs.

Solució

Recursos i URIs:

  • Tasques: /tasques
  • Tasca específica: /tasques/{id}

Mètodes HTTP:

  • GET /tasques: Obtenir totes les tasques.
  • GET /tasques/{id}: Obtenir una tasca específica.
  • POST /tasques: Crear una nova tasca.
  • PUT /tasques/{id}: Actualitzar una tasca existent.
  • DELETE /tasques/{id}: Eliminar una tasca.

Codis d'Estat:

  • 200 OK: Petició processada correctament.
  • 201 Created: Nova tasca creada.
  • 204 No Content: Tasca eliminada.
  • 400 Bad Request: Petició invàlida.
  • 404 Not Found: Tasca no trobada.
  • 500 Internal Server Error: Error al servidor.

Resum

En aquest tema, hem explorat els principis fonamentals del disseny d'APIs RESTful, incloent la uniformitat de la interfície, l'ús adequat dels mètodes HTTP, la gestió dels codis d'estat, el versionat d'APIs i la importància de la documentació. Aquests principis asseguren que les APIs siguin coherents, fàcils d'utilitzar i mantenir, i preparades per a la interoperabilitat entre diferents sistemes.

© Copyright 2024. Tots els drets reservats