SlideShare una empresa de Scribd logo
2
Lo más leído
3
Lo más leído
19
Lo más leído
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

PDF
Ansible - Hands on Training
PPTX
Vagrant
PDF
Virtualisation
PDF
Docker introduction
PDF
Introduction to Nexus Repository Manager.pdf
PDF
Solid NodeJS with TypeScript, Jest & NestJS
PPTX
React introduction
PPTX
Building mobile app with Ionic Framework
Ansible - Hands on Training
Vagrant
Virtualisation
Docker introduction
Introduction to Nexus Repository Manager.pdf
Solid NodeJS with TypeScript, Jest & NestJS
React introduction
Building mobile app with Ionic Framework

La actualidad más candente (20)

PDF
Paul Angus – Backup & Recovery in CloudStack
PDF
Hybrid cloud overview and VCF on VxRAIL
PDF
Treinamento Docker Básico
PPTX
Docker introduction &amp; benefits
PDF
Docker Swarm 0.2.0
PDF
Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...
PDF
Jenkins
PDF
Next.js Introduction
PDF
Kubernetes Monitoring & Best Practices
PDF
PPTX
Using the KVMhypervisor in CloudStack
PPTX
What is Docker
PDF
Introduction to Docker
PDF
Introduction to Docker
PDF
How to Deploy WSO2 Enterprise Integrator in Containers
PDF
Spring Boot
PDF
Docker para iniciantes
PDF
Kubernetes security
PDF
CoreOS : 설치부터 컨테이너 배포까지
PPTX
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
Paul Angus – Backup & Recovery in CloudStack
Hybrid cloud overview and VCF on VxRAIL
Treinamento Docker Básico
Docker introduction &amp; benefits
Docker Swarm 0.2.0
Guide To Jenkins Management Continuous Integration And Useful Plugins Complet...
Jenkins
Next.js Introduction
Kubernetes Monitoring & Best Practices
Using the KVMhypervisor in CloudStack
What is Docker
Introduction to Docker
Introduction to Docker
How to Deploy WSO2 Enterprise Integrator in Containers
Spring Boot
Docker para iniciantes
Kubernetes security
CoreOS : 설치부터 컨테이너 배포까지
IBM Integration Bus and REST APIs - Sanjay Nagchowdhury
Publicidad

Similar a 5.2. api-rest (20)

PPTX
API RESP.pptxAPI RESP.pptxAPI RESP.pptxAPI RESP.pptx
PDF
WORKSHOP I: Introducción a API REST
PDF
Semana 7 Servicios Web API REST con Mongodb
PPTX
Fundamentos para el diseño de una RESTful API pragmática
PPTX
Taller definición de apis
ODP
Desarrollando un API con REST
PPTX
Define y desarrolla tu primera api
PDF
Semana 7 Servicios Web REST con MongoDB final
PDF
Servicios Web
PDF
REST - deSymfony2012
PPTX
Desarrollo dirigido por modelo de servicios web REST
DOCX
Arquitectura Rest
PDF
T final modulo_1
PDF
Web services restful con JAX-RS
ODP
Documertar APIs - Meetup.js
ODP
Web framework ligeros y micros en java barcamp 2014
PPTX
Introducción a REST - SymfonyVLC
PPTX
Definición de apis con swagger
PDF
Rest Conf Rails
API RESP.pptxAPI RESP.pptxAPI RESP.pptxAPI RESP.pptx
WORKSHOP I: Introducción a API REST
Semana 7 Servicios Web API REST con Mongodb
Fundamentos para el diseño de una RESTful API pragmática
Taller definición de apis
Desarrollando un API con REST
Define y desarrolla tu primera api
Semana 7 Servicios Web REST con MongoDB final
Servicios Web
REST - deSymfony2012
Desarrollo dirigido por modelo de servicios web REST
Arquitectura Rest
T final modulo_1
Web services restful con JAX-RS
Documertar APIs - Meetup.js
Web framework ligeros y micros en java barcamp 2014
Introducción a REST - SymfonyVLC
Definición de apis con swagger
Rest Conf Rails
Publicidad

Más de xavazque2 (20)

PDF
258939538 dumping
PDF
380914324 poo-kotlin
PDF
146817358 android
PDF
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
PDF
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
PDF
325940441 motion-ui
PDF
371081023 curso-desarrollo-android
PDF
4.1. validaciones-y-excepciones
PDF
3.1 mvc-mvvm-app model-binding
PDF
5.1. stateles stateful-protocolo_http
PDF
435338801 programacion-mobile-android
PDF
457126889 android-pdf
PDF
266521557 apuntes-unidad-formativa-app-inventor
PDF
7. react js-1
PDF
PDF
484719815 pidiendo-ayuda-a-los-angeles-pdf
PDF
484717855 transmutacion-de-energias-pdf
PDF
5.layouts
PDF
6.2. js
PDF
2.1. arena-y-binding
258939538 dumping
380914324 poo-kotlin
146817358 android
Curso profesional-de-desarrollo-de-aplicaciones-android-con-kotlin
364196144 hogan-pensamiento-no-verbal-comunicacion-y-juego
325940441 motion-ui
371081023 curso-desarrollo-android
4.1. validaciones-y-excepciones
3.1 mvc-mvvm-app model-binding
5.1. stateles stateful-protocolo_http
435338801 programacion-mobile-android
457126889 android-pdf
266521557 apuntes-unidad-formativa-app-inventor
7. react js-1
484719815 pidiendo-ayuda-a-los-angeles-pdf
484717855 transmutacion-de-energias-pdf
5.layouts
6.2. js
2.1. arena-y-binding

Último (20)

PPTX
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
PDF
Calidad desde el Docente y la mejora continua .pdf
PDF
Maste clas de estructura metálica y arquitectura
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
clase auditoria informatica 2025.........
PPTX
Power Point Nicolás Carrasco (disertación Roblox).pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PDF
Diapositiva proyecto de vida, materia catedra
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
Sesion 1 de microsoft power point - Clase 1
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PPTX
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
PPTX
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
PDF
taller de informática - LEY DE OHM
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPT
introduccion a las_web en el 2025_mejoras.ppt
PPTX
Propuesta BKP servidores con Acronis1.pptx
Acronis Cyber Protect Cloud para Ciber Proteccion y Ciber Seguridad LATAM - A...
Calidad desde el Docente y la mejora continua .pdf
Maste clas de estructura metálica y arquitectura
Zarate Quispe Alex aldayir aplicaciones de internet .docx
clase auditoria informatica 2025.........
Power Point Nicolás Carrasco (disertación Roblox).pptx
Estrategia de apoyo tecnología miguel angel solis
RAP02 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
historia_web de la creacion de un navegador_presentacion.pptx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Diapositiva proyecto de vida, materia catedra
CyberOps Associate - Cisco Networking Academy
Sesion 1 de microsoft power point - Clase 1
REDES INFORMATICAS REDES INFORMATICAS.pptx
sa-cs-82-powerpoint-hardware-y-software_ver_4.pptx
RAP01 - TECNICO SISTEMAS TELEINFORMATICOS.pptx
taller de informática - LEY DE OHM
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
introduccion a las_web en el 2025_mejoras.ppt
Propuesta BKP servidores con Acronis1.pptx

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