SlideShare una empresa de Scribd logo
1 de 27
Descargar para leer sin conexión
API REST
Construcción de
Interfaces de Usuario
1er Cuatrimestre 2019
API
▰ Interfaz de Programación de Aplicaciones
▻ Application Programming Interface
▰ Conjunto de comandos, protocolos, funciones,
objetos, etc...
▰ Provee estándares para facilitar la interacción
con componentes
▰ Encapsula tareas complejas en otras más
simples
2
API
▰ ¿Es una Interfaz de Usuario?
▰ ¿Quién es el Usuario?
▰ ¿Conocen ejemplos de APIs?
3
4
Esquema
APIs Web
▰ Implementan servicios
▰ Exponen recursos
▰ Permite interactuar con multiplicidad de
tecnologías
▰ Establecen un protocolo de comunicación
▰ Agregan una capa de seguridad
5
REST
▰ Transferencia de Estado Representacional
▻ REpresentational State Transfer
▰ Estilo de arquitectura de software que
provee estándares para la interacción
entre sistemas web
▰ Hace que la comunicación entre sistemas
sea más simple
6
APIs RESTful
▰ Aquellas aplicaciones que son
compatibles con los principios REST:
▻ Stateless
▻ Arquitectura Cliente-Servidor
▻ Uso de Caché
▻ Interface Uniforme
7
API REST
▰ Identificación del Recurso
▻ usuarios/, restaurants/, pedidos/, etc...
▰ Operaciones bien definidas
▻ GET, POST, PUT, DELETE, etc…
▰ Sintaxis Universal
▻ GET usuarios/, DELETE usuarios/, etc…
▰ Hypermedia
▻ application/json, text/html, etc... 8
Interface Uniforme
API REST
Se necesita un formato definido para intercambiar
información. Los dos formatos más extendidos son:
9
Formato de Intercambio
JSON
JavaScript Object Notation
{
"credentials": {
"username": "hodor",
"password": "hodor"
}
}
XML
Extensible Markup Language
<credentials>
<username>hodor</username>
<password>hodor</password>
</credentials>
JSON
La sintaxis de JSON deriva de la sintaxis de notación de
objetos de JavaScript:
▰ Información como par “key”:“value”
▰ Datos separados por coma (,)
▰ Las llaves ({}) contienen objetos
▰ Los corchetes ([]) contienen listas
10
Reglas de Sintaxis
JSON
Las keys son “strings”.
Los value pueden ser:
▰ String "algún texto"
▰ Number 1 | -1 | 1.2 | -1.0
▰ Object {"key": "value"}
▰ List [1, "dos", {"val": 3.0}]
▰ Boolean true | false
▰ Null null
11
Tipos de datos
JSON
{
"lugar": "Universidad Nacional de Quilmes",
"coordenadas": {
"latitud": -34.706294,
"longitud": -58.278522
},
"distancias": [
{
"lugar": "Obelisco",
"kms": 14.81,
}, {
"lugar": "Mendoza",
"kms": 996.52
},
]
}
12
API REST
Para cada REQUEST, en una API REST se define la
estructura a la cual el cliente se debe ajustar para
recuperar o modificar un recurso. En general consiste de:
▰ Verbo HTTP: define qué tipo de operación realizar
▰ Protocolo aceptado: HTTP 1.1, HTTP 1.0
▰ Media Data aceptada: html, json, xml
▰ Encabezado: (opcional) permite pasar información extra
▰ Ruta al recurso
▰ Cuerpo de mensaje (opcional) que contiene datos 13
REQUESTs
API REST
GET /users/23 HTTP/1.1
Accept: text/html, application/json
14
REQUESTs ⪼ Ejemplos
POST /users HTTP/1.1
Accept: application/json
Body: {“user”: {
“name”: “Arya Stark”
“email”: “nobody@braavos.org”
}}
API REST
Por cada REQUEST que se recibe se debe retornar un
RESPONSE con la información necesaria para
describir lo que ocurrió:
▰ HTTP Code acorde a lo sucedido con la ejecución
▰ Protocolo de respuesta
▰ Media-data de la respuesta
▰ Cuerpo de mensaje (opcional) con la información
requerida
15
RESPONSEs
API REST
GET /users/42 HTTP/1.1
Accept: text/html, application/json
16
RESPONSEs ⪼ Ejemplo (I)
HTTP/1.1 200 (OK)
Content-Type: application/json
Body: {“user”: {
“name”:“Hodor”
“email”: “hodor@winterfell.com”
}}
API REST
POST /users HTTP/1.1
Body: {“user”: {
“name”: “Arya Stark”
“email”: “nobody@braavos.org”
}}
17
RESPONSEs ⪼ Ejemplo (II)
201 (CREATED)
Content-type: application/json
API REST
18
CRUD
El modelo debe poder crear, leer, actualizar y
eliminar recursos (Create, Read, Update, Delete). A
esto se le llama CRUD. Es la funcionalidad mínima que
se espera de un modelo.
El paradigma CRUD es muy común en la construcción
de aplicaciones web porque proporciona un modelo
mental sobre los recursos, de manera que sean
completos y utilizables.
API REST
19
CRUD ⪼ Estándares ⪼ Definición
Los CRUD se suelen arman respetando un estándar de
URIs y métodos:
▰ Crear POST /users
▰ Leer (todos) GET /users
▰ Leer (uno) GET /users/:id
▰ Actualizar PUT /users/:id
▰ Eliminar DELETE /users/:id
API REST
20
CRUD ⪼ Estándares ⪼ Respuesta
▰ POST /users
▻ 201 (Created)
▻ {“user”: Nuevo Usuario}
▰ GET /users
▻ 200 (OK)
▻ {“users”:[Listado]}
▰ GET /users/:id
▻ 200 (OK)
▻ {“user”: Usuario Pedido}
▰ PUT /users/:id
▻ 200 (OK)
▻ {“user”: Usuario Actualiz.}
▰ DELETE /users/:id
▻ 204 (No Content)
▻ Body: Vacío
API REST
21
CRUD ⪼ Estándares ⪼ Errores
▰ POST /users
▻ 404 (Not Found)
▻ 409 (Conflict)
▰ GET /users/:id
▻ 404 (Not Found)
▰ PUT /users/:id
▻ 404 (Not Found)
▻ 409 (Conflict)
▰ DELETE /users/:id
▻ 404 (Not Found)
▻ 405 (Method Not Allowed)
API REST
22
Errores Genéricos
▰ 401 (Unauthorized)
▰ 403 (Forbidden)
▰ 405 (Method Not Allowed)
▰ 500 (Internal Server Error)
API REST
23
Parámetros de consulta
Muchas veces es necesario agregar información a la
solicitud. Puede ser para filtrar una búsqueda o bien
para que la respuesta incluya más o menos
información.
Para estos casos se suelen utilizar parámetros de
consulta (query parameters). Se escriben como un par
clave=valor separados por &.
API REST
24
Parámetros de consulta Ejemplos
▰ GET /users?mail=gmail&born_in=1990
▰ GET /users/123?include=orders
▰ GET /users?page=3&per_page=25
No es buena práctica incluir parámetros en otros
métodos que no sean de consulta (GET). Para enviar
información (POST, PUT) se debe usar el body.
25
LINKS ÚTILES
26
▰ https://json.org/json-es.html
▰ https://www.restapitutorial.com/
▰ https://jsonapi.org/
▰ https://www.codecademy.com/articles/what-is-rest
▰ https://www.codecademy.com/articles/what-is-crud
▰ https://javalin.io/
▰ https://github.com/toddmotto/public-apis
27
¿Preguntas?

Más contenido relacionado

Similar a 5.2. api-rest

Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 
Servicios web
Servicios webServicios web
Servicios web
itoomac02
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
Vortexbird
 

Similar a 5.2. api-rest (20)

Servicios Web
Servicios WebServicios Web
Servicios Web
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
Integración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptxIntegración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptx
 
SEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptxSEVILLA Meetups29112022_sh.pptx
SEVILLA Meetups29112022_sh.pptx
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
S4-PD2-REST-REST FULL
S4-PD2-REST-REST FULLS4-PD2-REST-REST FULL
S4-PD2-REST-REST FULL
 
Servicios web
Servicios webServicios web
Servicios web
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
10- Unidad 3: Webservices - 3.2 Uso de Web services (Introducción, Caracterís...
 
Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)Neo Humano - GTUG Labs (12-12-2009)
Neo Humano - GTUG Labs (12-12-2009)
 
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
13-Unidad 3. WebServices-3.3. Inicio de Proyecto (Desarrollo)
 
Introduccion ws rest
Introduccion ws restIntroduccion ws rest
Introduccion ws rest
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Semana 7 Servicios Web REST con MongoDB final
Semana 7   Servicios Web REST con MongoDB finalSemana 7   Servicios Web REST con MongoDB final
Semana 7 Servicios Web REST con MongoDB final
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
 
Servicios web
Servicios webServicios web
Servicios web
 
Desarrollando con APIs
Desarrollando con APIsDesarrollando con APIs
Desarrollando con APIs
 

Más de xavazque2

Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlinCurso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
xavazque2
 
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
xavazque2
 
266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor
xavazque2
 
484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf
xavazque2
 

Más de xavazque2 (20)

258939538 dumping
258939538 dumping258939538 dumping
258939538 dumping
 
380914324 poo-kotlin
380914324 poo-kotlin380914324 poo-kotlin
380914324 poo-kotlin
 
146817358 android
146817358 android146817358 android
146817358 android
 
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlinCurso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
 
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
 
325940441 motion-ui
325940441 motion-ui325940441 motion-ui
325940441 motion-ui
 
371081023 curso-desarrollo-android
371081023 curso-desarrollo-android371081023 curso-desarrollo-android
371081023 curso-desarrollo-android
 
4.1. validaciones-y-excepciones
4.1. validaciones-y-excepciones4.1. validaciones-y-excepciones
4.1. validaciones-y-excepciones
 
3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-binding3.1 mvc-mvvm-app model-binding
3.1 mvc-mvvm-app model-binding
 
5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_http5.1. stateles stateful-protocolo_http
5.1. stateles stateful-protocolo_http
 
435338801 programacion-mobile-android
435338801 programacion-mobile-android435338801 programacion-mobile-android
435338801 programacion-mobile-android
 
457126889 android-pdf
457126889 android-pdf457126889 android-pdf
457126889 android-pdf
 
266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor266521557 apuntes-unidad-formativa-app-inventor
266521557 apuntes-unidad-formativa-app-inventor
 
7. react js-1
7. react js-17. react js-1
7. react js-1
 
Tp1
Tp1Tp1
Tp1
 
484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf484719815 pidiendo-ayuda-a-los-angeles-pdf
484719815 pidiendo-ayuda-a-los-angeles-pdf
 
484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdf484717855 transmutacion-de-energias-pdf
484717855 transmutacion-de-energias-pdf
 
5.layouts
5.layouts5.layouts
5.layouts
 
6.2. js
6.2. js6.2. js
6.2. js
 
2.1. arena-y-binding
2.1. arena-y-binding2.1. arena-y-binding
2.1. arena-y-binding
 

Último

Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
EdwinGarca59
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
Yanitza28
 

Último (20)

Redes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdfRedes Neuronales profundas convolucionales CNN ́s-1.pdf
Redes Neuronales profundas convolucionales CNN ́s-1.pdf
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 
Imágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la informaciónImágenes digitales: Calidad de la información
Imágenes digitales: Calidad de la información
 
Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024Ejercicio 1 periodo 2 de Tecnología 2024
Ejercicio 1 periodo 2 de Tecnología 2024
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptxTipos de Datos de Microsoft Access-JOEL GARCIA.pptx
Tipos de Datos de Microsoft Access-JOEL GARCIA.pptx
 
Desarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - EstradaDesarrollo del Dominio del Internet - Estrada
Desarrollo del Dominio del Internet - Estrada
 
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptxTarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
Tarea_sesion_15_Reportes Maestro - Detalle con el uso de AJAX.pptx
 
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
¡Ya basta! Sanidad Interior - Angela Kellenberger.pdf
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
herramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el temaherramientas web para estudiantes interesados en el tema
herramientas web para estudiantes interesados en el tema
 
el uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptxel uso de las TIC en la vida cotidiana.pptx
el uso de las TIC en la vida cotidiana.pptx
 
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiCVelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
VelderrainPerez_Paola_M1C1G63-097.pptx. LAS TiC
 
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbxCARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
CARPETA PEDAGOGICA DE TOE.docbbbbbbbbbbbx
 
De Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptxDe Olmos Santiago_Dolores _ M1S3AI6.pptx
De Olmos Santiago_Dolores _ M1S3AI6.pptx
 
Chat GPT para la educación Latinoamerica
Chat GPT para la educación LatinoamericaChat GPT para la educación Latinoamerica
Chat GPT para la educación Latinoamerica
 
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la ComunicaciónNavegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
Navegadores de internet - Nuevas Tecnologías de la Información y la Comunicación
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.Actividad 6/Las TIC en la Vida Cotidiana.
Actividad 6/Las TIC en la Vida Cotidiana.
 
Tipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de DatosTipos de datos en Microsoft Access de Base de Datos
Tipos de datos en Microsoft Access de Base de Datos
 

5.2. api-rest

  • 1. API REST Construcción de Interfaces de Usuario 1er Cuatrimestre 2019
  • 2. API ▰ Interfaz de Programación de Aplicaciones ▻ Application Programming Interface ▰ Conjunto de comandos, protocolos, funciones, objetos, etc... ▰ Provee estándares para facilitar la interacción con componentes ▰ Encapsula tareas complejas en otras más simples 2
  • 3. API ▰ ¿Es una Interfaz de Usuario? ▰ ¿Quién es el Usuario? ▰ ¿Conocen ejemplos de APIs? 3
  • 5. APIs Web ▰ Implementan servicios ▰ Exponen recursos ▰ Permite interactuar con multiplicidad de tecnologías ▰ Establecen un protocolo de comunicación ▰ Agregan una capa de seguridad 5
  • 6. REST ▰ Transferencia de Estado Representacional ▻ REpresentational State Transfer ▰ Estilo de arquitectura de software que provee estándares para la interacción entre sistemas web ▰ Hace que la comunicación entre sistemas sea más simple 6
  • 7. APIs RESTful ▰ Aquellas aplicaciones que son compatibles con los principios REST: ▻ Stateless ▻ Arquitectura Cliente-Servidor ▻ Uso de Caché ▻ Interface Uniforme 7
  • 8. API REST ▰ Identificación del Recurso ▻ usuarios/, restaurants/, pedidos/, etc... ▰ Operaciones bien definidas ▻ GET, POST, PUT, DELETE, etc… ▰ Sintaxis Universal ▻ GET usuarios/, DELETE usuarios/, etc… ▰ Hypermedia ▻ application/json, text/html, etc... 8 Interface Uniforme
  • 9. API REST Se necesita un formato definido para intercambiar información. Los dos formatos más extendidos son: 9 Formato de Intercambio JSON JavaScript Object Notation { "credentials": { "username": "hodor", "password": "hodor" } } XML Extensible Markup Language <credentials> <username>hodor</username> <password>hodor</password> </credentials>
  • 10. JSON La sintaxis de JSON deriva de la sintaxis de notación de objetos de JavaScript: ▰ Información como par “key”:“value” ▰ Datos separados por coma (,) ▰ Las llaves ({}) contienen objetos ▰ Los corchetes ([]) contienen listas 10 Reglas de Sintaxis
  • 11. JSON Las keys son “strings”. Los value pueden ser: ▰ String "algún texto" ▰ Number 1 | -1 | 1.2 | -1.0 ▰ Object {"key": "value"} ▰ List [1, "dos", {"val": 3.0}] ▰ Boolean true | false ▰ Null null 11 Tipos de datos
  • 12. JSON { "lugar": "Universidad Nacional de Quilmes", "coordenadas": { "latitud": -34.706294, "longitud": -58.278522 }, "distancias": [ { "lugar": "Obelisco", "kms": 14.81, }, { "lugar": "Mendoza", "kms": 996.52 }, ] } 12
  • 13. API REST Para cada REQUEST, en una API REST se define la estructura a la cual el cliente se debe ajustar para recuperar o modificar un recurso. En general consiste de: ▰ Verbo HTTP: define qué tipo de operación realizar ▰ Protocolo aceptado: HTTP 1.1, HTTP 1.0 ▰ Media Data aceptada: html, json, xml ▰ Encabezado: (opcional) permite pasar información extra ▰ Ruta al recurso ▰ Cuerpo de mensaje (opcional) que contiene datos 13 REQUESTs
  • 14. API REST GET /users/23 HTTP/1.1 Accept: text/html, application/json 14 REQUESTs ⪼ Ejemplos POST /users HTTP/1.1 Accept: application/json Body: {“user”: { “name”: “Arya Stark” “email”: “nobody@braavos.org” }}
  • 15. API REST Por cada REQUEST que se recibe se debe retornar un RESPONSE con la información necesaria para describir lo que ocurrió: ▰ HTTP Code acorde a lo sucedido con la ejecución ▰ Protocolo de respuesta ▰ Media-data de la respuesta ▰ Cuerpo de mensaje (opcional) con la información requerida 15 RESPONSEs
  • 16. API REST GET /users/42 HTTP/1.1 Accept: text/html, application/json 16 RESPONSEs ⪼ Ejemplo (I) HTTP/1.1 200 (OK) Content-Type: application/json Body: {“user”: { “name”:“Hodor” “email”: “hodor@winterfell.com” }}
  • 17. API REST POST /users HTTP/1.1 Body: {“user”: { “name”: “Arya Stark” “email”: “nobody@braavos.org” }} 17 RESPONSEs ⪼ Ejemplo (II) 201 (CREATED) Content-type: application/json
  • 18. API REST 18 CRUD El modelo debe poder crear, leer, actualizar y eliminar recursos (Create, Read, Update, Delete). A esto se le llama CRUD. Es la funcionalidad mínima que se espera de un modelo. El paradigma CRUD es muy común en la construcción de aplicaciones web porque proporciona un modelo mental sobre los recursos, de manera que sean completos y utilizables.
  • 19. API REST 19 CRUD ⪼ Estándares ⪼ Definición Los CRUD se suelen arman respetando un estándar de URIs y métodos: ▰ Crear POST /users ▰ Leer (todos) GET /users ▰ Leer (uno) GET /users/:id ▰ Actualizar PUT /users/:id ▰ Eliminar DELETE /users/:id
  • 20. API REST 20 CRUD ⪼ Estándares ⪼ Respuesta ▰ POST /users ▻ 201 (Created) ▻ {“user”: Nuevo Usuario} ▰ GET /users ▻ 200 (OK) ▻ {“users”:[Listado]} ▰ GET /users/:id ▻ 200 (OK) ▻ {“user”: Usuario Pedido} ▰ PUT /users/:id ▻ 200 (OK) ▻ {“user”: Usuario Actualiz.} ▰ DELETE /users/:id ▻ 204 (No Content) ▻ Body: Vacío
  • 21. API REST 21 CRUD ⪼ Estándares ⪼ Errores ▰ POST /users ▻ 404 (Not Found) ▻ 409 (Conflict) ▰ GET /users/:id ▻ 404 (Not Found) ▰ PUT /users/:id ▻ 404 (Not Found) ▻ 409 (Conflict) ▰ DELETE /users/:id ▻ 404 (Not Found) ▻ 405 (Method Not Allowed)
  • 22. API REST 22 Errores Genéricos ▰ 401 (Unauthorized) ▰ 403 (Forbidden) ▰ 405 (Method Not Allowed) ▰ 500 (Internal Server Error)
  • 23. API REST 23 Parámetros de consulta Muchas veces es necesario agregar información a la solicitud. Puede ser para filtrar una búsqueda o bien para que la respuesta incluya más o menos información. Para estos casos se suelen utilizar parámetros de consulta (query parameters). Se escriben como un par clave=valor separados por &.
  • 24. API REST 24 Parámetros de consulta Ejemplos ▰ GET /users?mail=gmail&born_in=1990 ▰ GET /users/123?include=orders ▰ GET /users?page=3&per_page=25 No es buena práctica incluir parámetros en otros métodos que no sean de consulta (GET). Para enviar información (POST, PUT) se debe usar el body.
  • 25. 25
  • 26. LINKS ÚTILES 26 ▰ https://json.org/json-es.html ▰ https://www.restapitutorial.com/ ▰ https://jsonapi.org/ ▰ https://www.codecademy.com/articles/what-is-rest ▰ https://www.codecademy.com/articles/what-is-crud ▰ https://javalin.io/ ▰ https://github.com/toddmotto/public-apis