SlideShare a Scribd company logo
1 of 86
Download to read offline
Simplemente

REST
Gabriel Fagúndez de los Reyes
2.500.000.000
usuarios
60.000.000.000.000.000.000
páginas
9.000.000
Facebook apps
¿Habrán imaginado este crecimiento al
momento de "inventar" la web?
NO
La evolución de Internet,
reveló una necesidad...
Protocolo de comunicación entre
clientes y servicios web
CORBA
XML-RPC
SOAP
REST
Representational State Transfer
¿Qué es REST?
¿Qué necesidad cubre?
API
Interfaz de programación de aplicaciones
JSON
JavaScript Object Notation
Demo_
Aplicando REST en 4 pasos
Elementos de información
Elementos de información

users
Acceso a los elementos de información
Acceso a los elementos de información

/users/:id
Códigos de estado HTTP
Códigos de estado HTTP

[200 OK]
Comunicación sin estado
Comunicación sin estado

/users/gabrielfagundez/repos
Tips :)
GET https://api.github.com?type=users&id=captainkidd
GET https://api.github.com?type=users&id=captainkidd

Usa recursos para acceder a los objetos
GET https://api.github.com?type=users&id=captainkidd
GET https://api.github.com/users/captainkidd
GET https://api.github.com/users/captainkidd/edit
GET https://api.github.com/users/captainkidd/edit

URIs únicas, sin acciones
GET https://api.github.com/users/captainkidd/edit
PUT https://api.github.com/users/captainkidd
GET https://api.github.com/users/captainkidd/repos.pdf
GET https://api.github.com/users/captainkidd/repos.pdf

URIs independientes del formato
GET https://api.github.com/users/captainkidd/repos.pdf
GET https://api.github.com/users/captainkidd/repos
Accept: application/pdf
GET https://api.github.com/gists/page/22/per_page/2
GET https://api.github.com/gists/page/22/per_page/2

Operaciones y filtrado con parámetros
GET https://api.github.com/gists/page/22/per_page/2
GET https://api.github.com/gists?page=22&per_page=2
GET https://api.github.com/users/captainkidd/repos
GET https://api.github.com/users/captainkidd/repos

Estructura lógica
No reinventes la rueda, usa HTTP
GET
“¿Me das este recurso?”
POST
“Tomá, poné esta información en su lugar”
PUT
“Tomá información actualizada, sustituí el anterior objeto”
PATCH
“Cambiá parte de la información por ésta que te envío”
DELETE
“Borralo”
HEAD
“Solo dame los cabezales,
quiero saber si mi información está ahí”
Y ante cada consulta, una respuesta
Success
200
OK

Success
200
OK

201
Created

Success
200
OK

201
Created

Success
202
Accepted
200

204

OK

No Content

201
Created

Success
202
Accepted
200

204

OK

No Content

201
Created

Success
202
Accepted

206
Partial Content
Redirection
301
Moved Permanently

Redirection
301
Moved Permanently

304
Not Modified

Redirection
301
Moved Permanently

304
Not Modified

Redirection
307
Temporary Redirect
Client Error
400
Bad Request

Client Error
400
Bad Request

Client Error
401
Unauthorized
400
Bad Request

Client Error
402
Payment Required

401
Unauthorized
404

400

Not Found

Bad Request

Client Error
402
Payment Required

401
Unauthorized
404

400

Not Found

Bad Request

Client Error
402
Payment Required

408
Request Timeout

401
Unauthorized
404

400
Bad Request

Not Found

412
Precondition Failed

Client Error
402
Payment Required

408
Request Timeout

401
Unauthorized
Server Error
500
Internal Server Error

Server Error
500
Internal Server Error

501
Not Implemented

Server Error
500
Internal Server Error

501
Not Implemented

Server Error
503
Service Unavailable
Simple.
Beyond REST...
Headers
Caché
Manejo de errores
Seguridad
Headers
Metadata
Accept: text/plain
Caché
Performance
Proxy - HTTP
Manejo de Errores
Errores para humanos
HTTP/1.1 415 Unsupported Media Type
{
"message": "<...> Must accept 'application/json'.",
"documentation_url": "http://developer.github.com/v3"
}
Seguridad
Acceso controlado
Basic Authentication
Nombre de usuario y contraseña
curl -X GET https://api.github.com/users/gabrielfagundez -i -H
'Authorization: Basic QNfosnd$eF30fmFppPw12ddD1s=='
OAuth V2
OAuth V2
APP
"La simplicidad es
la mayor sofisticación"
Leonardo da Vinci
¿Preguntas?
@gabrielfagundez

More Related Content

What's hot

Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura RestIsrael Rey
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexusGeneXus
 
Taller 3 conexion
Taller 3 conexionTaller 3 conexion
Taller 3 conexionolgasarasa
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)Daryl Moreno
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
 
WCF for Dummies (Parte II)
WCF for Dummies (Parte II)WCF for Dummies (Parte II)
WCF for Dummies (Parte II)Will.i.am
 
SP2010 evolución vs evolución
SP2010 evolución vs evoluciónSP2010 evolución vs evolución
SP2010 evolución vs evolucióngoreorti
 
Creacion Apirest Back{4}app
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}appblackmatt
 
In seguridad de aplicaciones web
In seguridad de aplicaciones webIn seguridad de aplicaciones web
In seguridad de aplicaciones webSaul Mamani
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Servicesedmodi
 
Sistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSaul Mamani
 
HTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo WebHTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo WebPlain Concepts
 

What's hot (19)

Arquitectura Rest
Arquitectura RestArquitectura Rest
Arquitectura Rest
 
Introducción a las API's Rest
Introducción a las API's RestIntroducción a las API's Rest
Introducción a las API's Rest
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
0041 rest web_services_en_genexus
0041 rest web_services_en_genexus0041 rest web_services_en_genexus
0041 rest web_services_en_genexus
 
Taller 3 conexion
Taller 3 conexionTaller 3 conexion
Taller 3 conexion
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)Tutorial - REST con java (JAX-RS 2.0)
Tutorial - REST con java (JAX-RS 2.0)
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
Servicios REST - PucelaTechDay
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
 
WCF for Dummies (Parte II)
WCF for Dummies (Parte II)WCF for Dummies (Parte II)
WCF for Dummies (Parte II)
 
SP2010 evolución vs evolución
SP2010 evolución vs evoluciónSP2010 evolución vs evolución
SP2010 evolución vs evolución
 
Creacion Apirest Back{4}app
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}app
 
In seguridad de aplicaciones web
In seguridad de aplicaciones webIn seguridad de aplicaciones web
In seguridad de aplicaciones web
 
SOAP y Web Services
SOAP y Web ServicesSOAP y Web Services
SOAP y Web Services
 
Desarrollo y consumo de web services
Desarrollo y consumo de web servicesDesarrollo y consumo de web services
Desarrollo y consumo de web services
 
Creando una API REST en PHP | PHPBaires
Creando una API REST en PHP | PHPBairesCreando una API REST en PHP | PHPBaires
Creando una API REST en PHP | PHPBaires
 
Sistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NETSistemas Distibuidos y Servicios Web .NET
Sistemas Distibuidos y Servicios Web .NET
 
HTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo WebHTML Tour - Construyendo tu ecosistema de desarrollo Web
HTML Tour - Construyendo tu ecosistema de desarrollo Web
 

Similar to Simplemente REST

Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...equipo24
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
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
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZequipo24
 
Daniel rabinovich php conference
Daniel rabinovich   php conferenceDaniel rabinovich   php conference
Daniel rabinovich php conferenceDaniel Rabinovich
 
Estrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepointEstrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepointDaniel Laco
 
App engine
App engineApp engine
App engineThirdWay
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0Jose Rojas
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)INSIGNIA4U
 
Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3Marc Rubiño
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Iniciativa Barcelona Open Data
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js IntroduccionMayer Horna
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPIPedro J. Molina
 

Similar to Simplemente REST (20)

Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
 
Programando WebApps con APIs
Programando WebApps con APIsProgramando WebApps con APIs
Programando WebApps con APIs
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Desarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZDesarrollo de Aplicaciones para Twitter - CWZGZ
Desarrollo de Aplicaciones para Twitter - CWZGZ
 
Daniel rabinovich php conference
Daniel rabinovich   php conferenceDaniel rabinovich   php conference
Daniel rabinovich php conference
 
Estrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepointEstrategias de desarrollo en sharepoint
Estrategias de desarrollo en sharepoint
 
App engine
App engineApp engine
App engine
 
REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoRJose Rojas Desarrollo Rapido de Aplicaciones con RoR
Jose Rojas Desarrollo Rapido de Aplicaciones con RoR
 
Joserojas Web 2.0
Joserojas Web 2.0Joserojas Web 2.0
Joserojas Web 2.0
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
Google
GoogleGoogle
Google
 
Desarrollo de webapps 1
Desarrollo de webapps 1Desarrollo de webapps 1
Desarrollo de webapps 1
 
Mvc + html5 + css3
Mvc + html5 + css3Mvc + html5 + css3
Mvc + html5 + css3
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 
GraphQL en .NET
GraphQL en .NETGraphQL en .NET
GraphQL en .NET
 
01 Ext Js Introduccion
01 Ext Js   Introduccion01 Ext Js   Introduccion
01 Ext Js Introduccion
 
Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
 

Recently uploaded

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfJulian Lamprea
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 

Recently uploaded (10)

International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 

Simplemente REST