SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
REST 
REpresentational State Transfer 
Ignacio Muñoz Vicente @imunoz_
¿Qué es REST? 
❖ Es una técnica de arquitectura software para sistemas 
hipermedia distribuidos como la World Wide Web 
Wikipedia
¿Qué no es REST? 
❖ REST no es un servicio web ni una tecnología
¿Qué son servicios RESTful? 
❖ Son aquellos servicios web que cumplen los principios 
de REST
Características 
❖ Sin estado - Cada mensaje HTTP contiene toda la información necesaria! 
❖ Operaciones HTTP - Uso de POST, GET, PUT, DELETE y otros! 
❖ Sintaxis universal: URI - Cada recurso queda identificado por su URI! 
❖ Hipermedios - Relación entre recursos mediante hipervínculos! 
❖ Códigos de estado HTTP - Usa los códigos HTTP para indicar el resultado de la 
petición
Características 
Sin estado 
- Sin sesión ni cookies! 
! 
- Cada petición es independiente! 
! 
- Cada petición debe tener toda la 
información necesaria para que el 
servidor la entienda y devuelva la 
respuesta correcta
Características 
Operaciones HTTP 
Utiliza los métodos HTTP de forma 
explicita para las operaciones a realizar:! 
! 
- GET: obtener un recurso del servidor! 
! 
- POST: Crear un recurso en el servidor! 
! 
- PUT: Actualizar un recurso en el servidor! 
! 
- DELETE: Eliminar un recurso del servidor! 
! 
- Hay más métodos pero estos son los 
más frecuentes: CRUD
Características 
GET /usuarios Nos permite acceder al listado de 
usuarios. 
! 
POST /usuarios Nos permite crear un usuario nuevo. Se 
envía en la petición la información que se necesite para la 
creación (mediante JSON o XML): 
<usuario> 
<nombre>Ignacio</nombre> 
<apellido>Muñoz</apellido> 
</usuario> 
! 
GET /usuarios/12 Nos permite acceder al detalle del usuario 
con id 12. 
! 
PUT /usuarios/12 Permite editar el usuario con id 12. Al 
igual que en POST se pasan los datos necesarios como 
cuerpo de la petición: 
<usuario> 
<apellido>Vicente</apellido> 
</usuario> 
! 
DELETE /usuarios/12 Eliminar el usuario con id 12. 
Operaciones HTTP 
Utiliza los métodos HTTP de forma 
explicita para las operaciones a realizar:! 
! 
- GET: obtener un recurso del servidor! 
! 
- POST: Crear un recurso en el servidor! 
! 
- PUT: Actualizar un recurso en el servidor! 
! 
- DELETE: Eliminar un recurso del servidor! 
! 
- Hay más métodos pero estos son los 
más frecuentes: CRUD
Características 
Sintaxis universal 
- Cada recurso se identifica con su URI única! 
! 
- Nombres mejor que verbos (excepto cuando son operaciones)! 
! 
- Nombres mejor en plural: http://______/usuarios/! 
! 
- Normalmente dos URLs similares: para listado (collection) y para ítem! 
! 
- Versión de la API en la URL ! 
! 
- CRUD a través de su URI y una operación HTTP
Características 
Hipermedia 
- HATEOAS: Hypermedia As The Engine Of Application State! 
! 
- Una respuesta debe ofrecer toda la información necesaria! 
! 
- Dado un punto de entrada a la API REST, es posible descubrir todos sus recursos a partir 
sólo de las respuestas del servidor .La respuesta devuelta por el servidor puede contener 
hipervínculos a otros recursos 
{ 
"id": 12, 
"nombre": "Ignacio", 
"apellido": "Muñoz", 
"dispositivos": [ 
{ "id": 1033 }, 
{"id": 3889 } 
] 
} 
{ 
"id": 12, 
"nombre": "Ignacio", 
"apellido": "Muñoz", 
"dispositivos": [ 
{ "dispositivo": http://…/usuarios/12/dispositivos/1033 }, 
{"dispositivo": http://…/usuarios/12/dispositivos/3889 } 
] 
}
Características 
Códigos de estado 
ALGUNOS CÓDIGOS 
200 - Petición correcta. 
201 - Petición completada y recurso creado correctamente. 
202 - Petición aceptada pero no completada. 
304 - No modificado. 
400 - Solicitud incorrecta. 
401 - No autorizado. 
403 – Prohibido. 
404 - No encontrado. 
405 - Método no permitido. 
406 - No aceptable. El servidor no puede devolver la información 
en el formato solicitado en la petición. 
500 - Error interno del servidor. 
501 - No implementado. 
- Indican el resultado de la operación! 
! 
- Hay que tener cuidado con:! 
! 
! 401 “Unauthorized” ! 
! ! significa realmente “Unauthenticated”! 
! 
! 403 “Forbidden” ! 
! ! significa realmente “Unauthorized”! 
! 
- Si se quiere dar más info de un error:! 
! - Errores internos (complementan al código de error de HTTP)! 
! - Descripción
Características 
MediaTypes 
! 
- En la arquitectura REST no existe un formato de intercambio de información 
predefinido! 
! 
- Se indica en las cabeceras / headers:! 
! 
! ! ! - Header Accept en la petición! 
! 
! ! ! - Header Content-Type en la respuesta! 
! 
- Ejemplo: application/json! 
! 
- Valores múltiples: Accept: application/json, text/plain
Ejemplo petición
Recomendaciones 
❖ Número de versión de la API en la URL! 
❖ http://<URL>/v3/usuarios! 
❖ Unificar JSON y JavaScript ! 
❖ camelCase (así nos ahorraremos ‘mapear’ luego el JSON)! 
❖ Paginación con 2 valores: offset + limit! 
❖ http://<URL completa>?offset=X&limit=Y! 
❖ Seguridad por recurso, no por URL: ! 
❖ OAuth2! 
❖ Basic (SSL) Auth! 
❖ hmac
Recomendaciones 
❖ Si son acciones que no requieren recursos (por ejemplo hacer un cálculo 
numérico, mejor utilizar verbos en el nombre)! 
❖ http://<URL>/sumar?valor1=X&valor2=Y! 
❖ Búsqueda: método search, parámetro q (URL encoded)! 
❖ http://<URL completa>?q=cualquier%20palabra! 
❖ Para conocer métodos HTTP disponibles! 
❖ Usar OPTIONS —> Allow header: HEAD, GET, PUT, POST, DELETE, OPTIONS, …! 
❖ Fechas mediante ISO 8601 (UTC)! 
❖ año-mes-díaThora:minutos:segundos,nanosegundosZ! 
❖ Versión también en los datos! 
❖ Accept: application/vnd.github.v3+json
Cacheo 
Cacheo en servidor 
! 
- Hay que evitar a toda costa accesos a base de datos —> muy costosos! 
! 
- Las peticiones de recursos más solicitadas deben cachearse en memoria! 
! 
- Muchas soluciones:! 
! 
! - REDIS: cache en memoria, clave-valor. http://redis.io/! 
! 
! - Varnish: https://www.varnish-cache.org/! 
! 
! - Otros muchos
Cacheo 
Cacheo en cliente 
El campo ETag indica la versión del recurso:! 
!! 
! 1- Cliente solicita un recurso! 
! 2- El servidor devuelve:! 
! ! ! - Código 200! 
! ! ! - Body: el recurso solicitado! 
! ! ! - Header: cabeceras habituales y el ETag: ETag: “64233457696a7c876b7e"! 
! 3- Cliente vuelve a solicitar el recurso, enviado la siguiente cabecera:! 
! ! ! If-None-Match: “64233457696a7c876b7e"! 
! 
Si el recurso ha cambiado el servidor devolverá el recurso actualizado, nuevo ETag y código 200.! 
! 
Si el recurso no ha cambiado el servidor devolverá:! 
! ! - Código 304! 
! ! - Body: vacío! 
! ! - Header: cabeceras habituales y el mismo ETag
¿Por qué usar REST? 
❖ Es sencillo de entender e implementar! 
❖ Escalabilidad, independencia, seguridad, encapsulación, etc.! 
❖ Mola, es lo más parecido a un estándar
¿Por qué usar REST? 
❖ Es sencillo de entender e implementar! 
❖ Escalabilidad, independencia, seguridad, encapsulación, etc.! 
❖ Mola, es lo más parecido a un estándar
¿Cuando NO usar REST? 
❖ Cuando es un servicio muy personalizado: seguridad, 
transacciones, vocabulario y nomenclatura específica, 
etc.! 
❖ Necesidad de respuesta asíncrona en la petición
Ignacio Muñoz Vicente @imunoz_ 
REST 
REpresentational State Transfer 
Fuentes:! 
! 
http://es.wikipedia.org/wiki/Representational_State_Transfer! 
http://www.adwe.es/general/colaboraciones/servicios-web-restful-con-http-parte-ii-ejemplos! 
http://rest.elkstein.org/! 
http://haciendo.minube.com/usar-etags-109!

Contenu connexe

Tendances

Modelado de analisis para aplicaciones web
Modelado de analisis para aplicaciones webModelado de analisis para aplicaciones web
Modelado de analisis para aplicaciones webMaritzaD
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!Alex Borysov
 
Web container and Apache Tomcat
Web container and Apache TomcatWeb container and Apache Tomcat
Web container and Apache TomcatAuwal Amshi
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixAndré Déo
 
C# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENTC# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENTDr. Awase Khirni Syed
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & DevelopmentAshok Pundit
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewShahed Chowdhuri
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Why TypeScript?
Why TypeScript?Why TypeScript?
Why TypeScript?FITC
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianVahid Rahimian
 
API Best Practices
API Best PracticesAPI Best Practices
API Best PracticesSai Koppala
 

Tendances (20)

Modelado de analisis para aplicaciones web
Modelado de analisis para aplicaciones webModelado de analisis para aplicaciones web
Modelado de analisis para aplicaciones web
 
Get & post
Get & postGet & post
Get & post
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!
 
Web container and Apache Tomcat
Web container and Apache TomcatWeb container and Apache Tomcat
Web container and Apache Tomcat
 
Curso JSF - Conceptos Basicos
Curso JSF - Conceptos BasicosCurso JSF - Conceptos Basicos
Curso JSF - Conceptos Basicos
 
API Docs with OpenAPI 3.0
API Docs with OpenAPI 3.0API Docs with OpenAPI 3.0
API Docs with OpenAPI 3.0
 
Swagger
SwaggerSwagger
Swagger
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Basic Python Django
Basic Python DjangoBasic Python Django
Basic Python Django
 
Monitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com ZabbixMonitoramento de Aplicações Web Modernas com Zabbix
Monitoramento de Aplicações Web Modernas com Zabbix
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
C# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENTC# ASP.NET WEB API APPLICATION DEVELOPMENT
C# ASP.NET WEB API APPLICATION DEVELOPMENT
 
REST API Design & Development
REST API Design & DevelopmentREST API Design & Development
REST API Design & Development
 
ASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with OverviewASP.NET Core MVC + Web API with Overview
ASP.NET Core MVC + Web API with Overview
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Why TypeScript?
Why TypeScript?Why TypeScript?
Why TypeScript?
 
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid RahimianAPI Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
API Design, A Quick Guide to REST, SOAP, gRPC, and GraphQL, By Vahid Rahimian
 
What is an API
What is an APIWhat is an API
What is an API
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 

En vedette

Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesBruno Gutierrez
 
Introduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestIntroduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestDavid J. Brenes
 
Desarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaDesarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaSoftware Guru
 
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaDesarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaAlián Rigñack Quevedo
 
Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Ignacio Muñoz Vicente
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesRoberto Perales
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Ignacio Muñoz Vicente
 

En vedette (11)

Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
Android Superstar - Buenas Prácticas
Android Superstar - Buenas PrácticasAndroid Superstar - Buenas Prácticas
Android Superstar - Buenas Prácticas
 
Instalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías MovilesInstalacion Apache Cordova Tecnologías Moviles
Instalacion Apache Cordova Tecnologías Moviles
 
Introduccion a los Servicios Web Rest
Introduccion a los Servicios Web RestIntroduccion a los Servicios Web Rest
Introduccion a los Servicios Web Rest
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Desarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache CordovaDesarrollo de apps móviles con Apache Cordova
Desarrollo de apps móviles con Apache Cordova
 
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache CordovaDesarrollo de aplicaciones móviles con Ionic y Apache Cordova
Desarrollo de aplicaciones móviles con Ionic y Apache Cordova
 
Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2Desarrollo de aplicaciones multiplataforma 1/2
Desarrollo de aplicaciones multiplataforma 1/2
 
Desarrollo de aplicaciones moviles
Desarrollo de aplicaciones movilesDesarrollo de aplicaciones moviles
Desarrollo de aplicaciones moviles
 
Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2Desarrollo de aplicaciones multiplataforma 2/2
Desarrollo de aplicaciones multiplataforma 2/2
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
 

Similaire à Rest

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 PUSHAlejandro Esquiva Rodriguez
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza.NET Conf UY
 
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.pptxLuisTenorio42
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apisCloudAppi
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTBEEVA_es
 
APIs REST con NodeJS y MongoDB
APIs REST con NodeJS y MongoDBAPIs REST con NodeJS y MongoDB
APIs REST con NodeJS y MongoDBJorge Zaccaro
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-restxavazque2
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAPea2014G3
 

Similaire à Rest (20)

REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
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
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Developers love APIs
Developers love APIsDevelopers love APIs
Developers love APIs
 
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
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apis
 
Seguridad en web
Seguridad en webSeguridad en web
Seguridad en web
 
Protocol HTTP
Protocol HTTPProtocol HTTP
Protocol HTTP
 
Charla REST API
Charla REST APICharla REST API
Charla REST API
 
RESTful APIs con Tastypie
RESTful APIs con TastypieRESTful APIs con Tastypie
RESTful APIs con Tastypie
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
Http al descubierto
Http al descubiertoHttp al descubierto
Http al descubierto
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
APIs REST con NodeJS y MongoDB
APIs REST con NodeJS y MongoDBAPIs REST con NodeJS y MongoDB
APIs REST con NodeJS y MongoDB
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-rest
 
REST, JERSEY & SOAP
REST, JERSEY & SOAPREST, JERSEY & SOAP
REST, JERSEY & SOAP
 

Dernier

Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar24roberto21
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointValerioIvanDePazLoja
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptxHugoGutierrez99
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfcristianrb0324
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfKarinaCambero3
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDAVIDROBERTOGALLEGOS
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxhasbleidit
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdfBetianaJuarez1
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Marketing BRANDING
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024u20211198540
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadEduardoSantiagoSegov
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armadob7fwtwtfxf
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxkimontey
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdfsharitcalderon04
 

Dernier (20)

Actividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolarActividades de computación para alumnos de preescolar
Actividades de computación para alumnos de preescolar
 
Trabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power PointTrabajando con Formasy Smart art en power Point
Trabajando con Formasy Smart art en power Point
 
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
#Tare10ProgramacionWeb2024aaaaaaaaaaaa.pptx
 
La electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdfLa electricidad y la electronica.10-7.pdf
La electricidad y la electronica.10-7.pdf
 
Herramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdfHerramientas que posibilitan la información y la investigación.pdf
Herramientas que posibilitan la información y la investigación.pdf
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
David_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptxDavid_Gallegos - tarea de la sesión 11.pptx
David_Gallegos - tarea de la sesión 11.pptx
 
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docxPLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
PLANEACION DE CLASES TEMA TIPOS DE FAMILIA.docx
 
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
_Planificacion Anual NTICX 2024.SEC.21.4.1.docx.pdf
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
Agencia Marketing Branding Google Workspace Deployment Services Credential Fe...
 
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
Inteligencia Artificial. Matheo Hernandez Serrano USCO 2024
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
La tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedadLa tecnología y su impacto en la sociedad
La tecnología y su impacto en la sociedad
 
Viguetas Pretensadas en concreto armado
Viguetas Pretensadas  en concreto armadoViguetas Pretensadas  en concreto armado
Viguetas Pretensadas en concreto armado
 
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptxLINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
LINEA DE TIEMPO LITERATURA DIFERENCIADO LITERATURA.pptx
 
Análisis de Artefactos Tecnologicos (3) (1).pdf
Análisis de Artefactos Tecnologicos  (3) (1).pdfAnálisis de Artefactos Tecnologicos  (3) (1).pdf
Análisis de Artefactos Tecnologicos (3) (1).pdf
 

Rest

  • 1. REST REpresentational State Transfer Ignacio Muñoz Vicente @imunoz_
  • 2. ¿Qué es REST? ❖ Es una técnica de arquitectura software para sistemas hipermedia distribuidos como la World Wide Web Wikipedia
  • 3. ¿Qué no es REST? ❖ REST no es un servicio web ni una tecnología
  • 4. ¿Qué son servicios RESTful? ❖ Son aquellos servicios web que cumplen los principios de REST
  • 5. Características ❖ Sin estado - Cada mensaje HTTP contiene toda la información necesaria! ❖ Operaciones HTTP - Uso de POST, GET, PUT, DELETE y otros! ❖ Sintaxis universal: URI - Cada recurso queda identificado por su URI! ❖ Hipermedios - Relación entre recursos mediante hipervínculos! ❖ Códigos de estado HTTP - Usa los códigos HTTP para indicar el resultado de la petición
  • 6. Características Sin estado - Sin sesión ni cookies! ! - Cada petición es independiente! ! - Cada petición debe tener toda la información necesaria para que el servidor la entienda y devuelva la respuesta correcta
  • 7. Características Operaciones HTTP Utiliza los métodos HTTP de forma explicita para las operaciones a realizar:! ! - GET: obtener un recurso del servidor! ! - POST: Crear un recurso en el servidor! ! - PUT: Actualizar un recurso en el servidor! ! - DELETE: Eliminar un recurso del servidor! ! - Hay más métodos pero estos son los más frecuentes: CRUD
  • 8. Características GET /usuarios Nos permite acceder al listado de usuarios. ! POST /usuarios Nos permite crear un usuario nuevo. Se envía en la petición la información que se necesite para la creación (mediante JSON o XML): <usuario> <nombre>Ignacio</nombre> <apellido>Muñoz</apellido> </usuario> ! GET /usuarios/12 Nos permite acceder al detalle del usuario con id 12. ! PUT /usuarios/12 Permite editar el usuario con id 12. Al igual que en POST se pasan los datos necesarios como cuerpo de la petición: <usuario> <apellido>Vicente</apellido> </usuario> ! DELETE /usuarios/12 Eliminar el usuario con id 12. Operaciones HTTP Utiliza los métodos HTTP de forma explicita para las operaciones a realizar:! ! - GET: obtener un recurso del servidor! ! - POST: Crear un recurso en el servidor! ! - PUT: Actualizar un recurso en el servidor! ! - DELETE: Eliminar un recurso del servidor! ! - Hay más métodos pero estos son los más frecuentes: CRUD
  • 9. Características Sintaxis universal - Cada recurso se identifica con su URI única! ! - Nombres mejor que verbos (excepto cuando son operaciones)! ! - Nombres mejor en plural: http://______/usuarios/! ! - Normalmente dos URLs similares: para listado (collection) y para ítem! ! - Versión de la API en la URL ! ! - CRUD a través de su URI y una operación HTTP
  • 10. Características Hipermedia - HATEOAS: Hypermedia As The Engine Of Application State! ! - Una respuesta debe ofrecer toda la información necesaria! ! - Dado un punto de entrada a la API REST, es posible descubrir todos sus recursos a partir sólo de las respuestas del servidor .La respuesta devuelta por el servidor puede contener hipervínculos a otros recursos { "id": 12, "nombre": "Ignacio", "apellido": "Muñoz", "dispositivos": [ { "id": 1033 }, {"id": 3889 } ] } { "id": 12, "nombre": "Ignacio", "apellido": "Muñoz", "dispositivos": [ { "dispositivo": http://…/usuarios/12/dispositivos/1033 }, {"dispositivo": http://…/usuarios/12/dispositivos/3889 } ] }
  • 11. Características Códigos de estado ALGUNOS CÓDIGOS 200 - Petición correcta. 201 - Petición completada y recurso creado correctamente. 202 - Petición aceptada pero no completada. 304 - No modificado. 400 - Solicitud incorrecta. 401 - No autorizado. 403 – Prohibido. 404 - No encontrado. 405 - Método no permitido. 406 - No aceptable. El servidor no puede devolver la información en el formato solicitado en la petición. 500 - Error interno del servidor. 501 - No implementado. - Indican el resultado de la operación! ! - Hay que tener cuidado con:! ! ! 401 “Unauthorized” ! ! ! significa realmente “Unauthenticated”! ! ! 403 “Forbidden” ! ! ! significa realmente “Unauthorized”! ! - Si se quiere dar más info de un error:! ! - Errores internos (complementan al código de error de HTTP)! ! - Descripción
  • 12. Características MediaTypes ! - En la arquitectura REST no existe un formato de intercambio de información predefinido! ! - Se indica en las cabeceras / headers:! ! ! ! ! - Header Accept en la petición! ! ! ! ! - Header Content-Type en la respuesta! ! - Ejemplo: application/json! ! - Valores múltiples: Accept: application/json, text/plain
  • 14. Recomendaciones ❖ Número de versión de la API en la URL! ❖ http://<URL>/v3/usuarios! ❖ Unificar JSON y JavaScript ! ❖ camelCase (así nos ahorraremos ‘mapear’ luego el JSON)! ❖ Paginación con 2 valores: offset + limit! ❖ http://<URL completa>?offset=X&limit=Y! ❖ Seguridad por recurso, no por URL: ! ❖ OAuth2! ❖ Basic (SSL) Auth! ❖ hmac
  • 15. Recomendaciones ❖ Si son acciones que no requieren recursos (por ejemplo hacer un cálculo numérico, mejor utilizar verbos en el nombre)! ❖ http://<URL>/sumar?valor1=X&valor2=Y! ❖ Búsqueda: método search, parámetro q (URL encoded)! ❖ http://<URL completa>?q=cualquier%20palabra! ❖ Para conocer métodos HTTP disponibles! ❖ Usar OPTIONS —> Allow header: HEAD, GET, PUT, POST, DELETE, OPTIONS, …! ❖ Fechas mediante ISO 8601 (UTC)! ❖ año-mes-díaThora:minutos:segundos,nanosegundosZ! ❖ Versión también en los datos! ❖ Accept: application/vnd.github.v3+json
  • 16. Cacheo Cacheo en servidor ! - Hay que evitar a toda costa accesos a base de datos —> muy costosos! ! - Las peticiones de recursos más solicitadas deben cachearse en memoria! ! - Muchas soluciones:! ! ! - REDIS: cache en memoria, clave-valor. http://redis.io/! ! ! - Varnish: https://www.varnish-cache.org/! ! ! - Otros muchos
  • 17. Cacheo Cacheo en cliente El campo ETag indica la versión del recurso:! !! ! 1- Cliente solicita un recurso! ! 2- El servidor devuelve:! ! ! ! - Código 200! ! ! ! - Body: el recurso solicitado! ! ! ! - Header: cabeceras habituales y el ETag: ETag: “64233457696a7c876b7e"! ! 3- Cliente vuelve a solicitar el recurso, enviado la siguiente cabecera:! ! ! ! If-None-Match: “64233457696a7c876b7e"! ! Si el recurso ha cambiado el servidor devolverá el recurso actualizado, nuevo ETag y código 200.! ! Si el recurso no ha cambiado el servidor devolverá:! ! ! - Código 304! ! ! - Body: vacío! ! ! - Header: cabeceras habituales y el mismo ETag
  • 18. ¿Por qué usar REST? ❖ Es sencillo de entender e implementar! ❖ Escalabilidad, independencia, seguridad, encapsulación, etc.! ❖ Mola, es lo más parecido a un estándar
  • 19. ¿Por qué usar REST? ❖ Es sencillo de entender e implementar! ❖ Escalabilidad, independencia, seguridad, encapsulación, etc.! ❖ Mola, es lo más parecido a un estándar
  • 20. ¿Cuando NO usar REST? ❖ Cuando es un servicio muy personalizado: seguridad, transacciones, vocabulario y nomenclatura específica, etc.! ❖ Necesidad de respuesta asíncrona en la petición
  • 21. Ignacio Muñoz Vicente @imunoz_ REST REpresentational State Transfer Fuentes:! ! http://es.wikipedia.org/wiki/Representational_State_Transfer! http://www.adwe.es/general/colaboraciones/servicios-web-restful-con-http-parte-ii-ejemplos! http://rest.elkstein.org/! http://haciendo.minube.com/usar-etags-109!