¿Cómo hago que mis APIs sean usables?
A través de un ejemplo desarrollado en Spring veremos como realizar todo el proceso de diseño aplicando un conjunto de buenas prácticas que te ayuden en el proceso de toma de decisión a la hora de enfrentarte al diseño de APIs.
8. NOMBRE DE LOS RECURSOS
●
●
●
●
●
○
○
○
●
→
○
→
○
→
●
○
○
1.1 - NOMENCLATURA
●
→
●
→
●
● Terminar el nombre de los recursos con el carácter
“/”. Si se hace esto y tenemos por ejemplo:
/customers/{customer-id}/
/customers/{customer-id}/addresses
Al hacer una petición sobre el recurso .../addresses
se ejecutarán ambos.
35. V. 1. 3. 8
Fix bugs
Nueva
funcionalidad
Cambios
incompatibles
VERSIONADO EN LA DEFINICIÓN DE LA API
VERSIONADO EN LA URL DE INVOCACIÓN
Versionado semántico:
2.3- ¿CÓMO VERSIONO?
37. ●
GET /items?limit=20
GET /items?limit=20&offset=20
GET /items?limit=20&offset=40
●
GET /items?limit=20
GET /items?limit=20&createBefore=2018-01-20T00:00:00
GET /items?limit=20&createBefore=2018-01-19T00:00:00
TÉCNICAS DE PAGINACIÓN
2.4- ¿CÓMO PAGINAR?
●
GET /items?limit=20
GET /items?limit=20&cursor=13740047775
GET /items?limit=20&cursor=13740047795
44. 2.6.- ORDENACIÓN
●
GET /customers?sortBy=asc(email)
GET /customers?sortBy=desc(email)
GET /customers?sortBy=+email
GET /customers?sortBy=-email
GET /customers?sortBy=email.asc
GET /customers?sortBy=email.desc
GET /customers?sortBy=email&orderBy=asc
GET /customers?sortBy=email&ordery=desc
●
GET /customers?sortBy=+email
GET /customers?sortBy=-email
●
○
○
GET /users?sortBy=-lastName
GET /users?sortBy=+email
●
GET /users?sortBy=-lastName,+email
TÉCNICAS DE ORDENACIÓN
46. 3.-METODOLOGIA DE DISEÑO DE RECURSOS
1.- Entender la funcionalidad y
el flujo de la operativa
2.- Identificar las entidades
involucradas
3.- Tipificar los recursos o
entidades
4.- Relacionar los recursos
5.- Diseñar recursos y los
campos E/S
6.- Implementar la definición
de la API
48. 1.- Entender la funcionalidad y
el flujo de la operativa
4.- EJEMPLO
49. 2.- Identificar las entidades
involucradas
/subscriptions
/profiles
/visualizations
/tv-shows
/films
/seasons /chapters
API Films
/recommendations
API
Subscriptions
API TV Shows
4.- EJEMPLO
50. 3.- Tipificar los recursos o
entidades
/subscriptions
/profiles
/visualizations
/tv-shows
/films
/seasons /chapters
API Films
/recommendations
Collection y document
Collection y document
Collection y document
Collection y document
Collection y documentCollection y document
Collection y document
Collection
API
Subscriptions
API TV Shows
4.- EJEMPLO
52. 5.- Diseñar recursos y los
campos E/S
/subscriptions
/profiles
/visualizations
/tv-shows
/films
/seasons /chapters
API
Subscriptions API Films
/recommendations
Collection y document
Collection y document
Collection y document
Collection y document
Collection y documentCollection y document
Collection y document
Collection
1:N
1:N
1:N 1:N
1:N
API TV Shows
4.- EJEMPLO