SlideShare una empresa de Scribd logo
1 de 23
INTRODUCCIÓN A REST Y ROA
(Resource Oriented Architecture)
¿Quién es este friki?
Twitter: @elafo
Github: eLafo
HTTP
●   Protocolo de envío de mensajes en la web
●   El cliente envía una petición (request)
●   El servidor devuelve una respuesta(response)
Request
●   Métodos
●   Path
●   Cabeceras
●   Cuerpo
Ejemplos de request
POST /Earth/USA/Mount%20Rushmore HTTP/1.1
Host: maps.example.com
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
type=national-park&description=We%20visited%20on%203/5/2005


GET /index.html HTTP/1.1
Host: www.oreilly.com
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12)...
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,...
Accept-Language: us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Clasificación de métodos
●   Métodos seguros
●   Métodos idempotentes
Listado de métodos
●   GET
●   PUT
●   DELETE
●   POST
●   HEAD
●   OPTIONS
●   TRACE
●   CONNECT
●   UPDATE
Response
●   Código de respuesta
●   Cabeceras
●   Cuerpo
Ejemplo de response
HTTP/1.1 200 OK
Date: Fri, 17 Nov 2006 15:36:32 GMT
Server: Apache
Last-Modified: Fri, 17 Nov 2006 09:05:32 GMT
Etag: "7359b7-a7fa-455d8264
Accept-Ranges: bytes
Content-Length: 43302
Content-Type: text/html
X-Cache: MISS from www.oreilly.com
Keep-Alive: timeout=15, max=1000
Connection: Keep-Alive


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
...


●
¿Cómo se define un API?
●   Qué hacer
    –   Método HTTP
    –   Path
    –   Cuerpo
●   Sobre qué
    –   Path
    –   Cuerpo
Tipos de APIs
●   RPC-Style
●   REST
●   REST-RPC Hybrid



    Restful web services – Leonard Richardson &
    Sam Ruby (O'reilly)
APIs RPC-STYLE
●     Todo en el cuerpo
POST /rpc HTTP/1.1
Host: www.upcdatabase.com
User-Agent: XMLRPC::Client (Ruby 1.8.4)
Content-Type: text/xml; charset=utf-8
Content-Length: 158
Connection: keep-alive
<?xml version="1.0" ?>
<methodCall>
<methodName>lookupUPC</methodName>
...
</methodCall>
APIs REST
●   Acción → Método HTTP
●   Scope → Path



    GET /hello.txt HTTP/1.1
    Host: www.example.com
APIs REST-RPC Hybrid (aka REST
        mis cojones 33)
●   Todo en el path




    GET services/rest?api_key=xxx&method=flickr.photos.search&tags=penguin
    HTTP/1.1
    Host: www.flickr.com
ROA (Resource Oriented
          Architecture)
Orientado a recursos
(Nosotros decidimos qué es un recurso)
ROA (Resource Oriented
            Architecture)
Cada recurso ha de tener al menos una URI
(addressability)
/release/20120511
/users/elafo


Truconsejo: mola que las URIs sean descriptivas
–   /metal/iron_maiden vs /23slhdb/0238ghs
ROA (Resource Oriented
          Architecture)
Un recurso puede tener varias URIs
Una URI sólo para un recurso
/release/20120511
/release/last


Aunque apunten a la misma información, el
concepto puede ser diferente
ROA (Resource Oriented
                Architecture)
●   Stateleness
    –   Cada petición debe resolverse de forma aislada
        sin que afecten las anteriores
ROA (Resource Oriented
                Architecture)
●   Representaciones
    –   Idea vs bytes
    –   ¿Deberían todas las representaciones devolver la
        misma información?
ROA (Resource Oriented
                Architecture)
●   Hypermedia
    –   Un recurso debería mostrar los recursos
        relacionados por medio de URIs a dichos recursos
ROA(Resource Oriented
                Architecture)
<?xml version='1.0' encoding='UTF-8'?>
<ListAllMyBucketsResult xmlns='http://s3.amazonaws.com/doc/2006-03-01/'>
  <Owner>
     <ID>c0363f7260f2f5fcf38d48039f4fb5cab21b060577817310be5170e7774aad70</ID>
     <DisplayName>leonardr28</DisplayName>
  </Owner>
  <Buckets>
     <Bucket>
       <Name>crummy.com</Name>
       <URI>https://s3.amazonaws.com/crummy.com</URI>
       <CreationDate>2006-10-26T18:46:45.000Z</CreationDate>
     </Bucket>
  </Buckets>
</ListAllMyBucketsResult>
¿Preguntas?
¡¡¡GRACIAS!!!

Más contenido relacionado

Similar a REST y ROA introducción

Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web DevelopmentJaime Irurzun
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació WebCarlesMG57
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpdruna
 
Http 1.1 clase 4 - curso front-end 2014 - open webinars
Http 1.1   clase 4 - curso front-end 2014 - open webinarsHttp 1.1   clase 4 - curso front-end 2014 - open webinars
Http 1.1 clase 4 - curso front-end 2014 - open webinarsOpenWebinars.net
 
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Desarrollos NEA
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorJose Emilio Labra Gayo
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando phpCarlos Cruz Rincon
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 

Similar a REST y ROA introducción (20)

Open Source Modern Web Development
Open Source Modern Web DevelopmentOpen Source Modern Web Development
Open Source Modern Web Development
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
Apache
ApacheApache
Apache
 
Protocolo http
Protocolo httpProtocolo http
Protocolo http
 
Apache ha muerto, Viva Lighttpd
Apache ha muerto, Viva LighttpdApache ha muerto, Viva Lighttpd
Apache ha muerto, Viva Lighttpd
 
Protocol HTTP
Protocol HTTPProtocol HTTP
Protocol HTTP
 
Http 1.1 clase 4 - curso front-end 2014 - open webinars
Http 1.1   clase 4 - curso front-end 2014 - open webinarsHttp 1.1   clase 4 - curso front-end 2014 - open webinars
Http 1.1 clase 4 - curso front-end 2014 - open webinars
 
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
Ajax reverse (Comet) con ASP.NET MVC - JUTI 2011
 
RESTful APIs con Tastypie
RESTful APIs con TastypieRESTful APIs con Tastypie
RESTful APIs con Tastypie
 
Curso de php
Curso de phpCurso de php
Curso de php
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 
Apache avanzado
Apache avanzadoApache avanzado
Apache avanzado
 
Screen scraping
Screen scrapingScreen scraping
Screen scraping
 
Arquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el ServidorArquitectura de la Web y Computación en el Servidor
Arquitectura de la Web y Computación en el Servidor
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
Generación de web sites dinámicos usando php
Generación de web sites dinámicos usando phpGeneración de web sites dinámicos usando php
Generación de web sites dinámicos usando php
 
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
(20.05.2009) Cumuy Presenta - Más tecnologías interesantes para conocer - PPT 1
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 

Más de Javier Lafora Rey

Modular development with redux
Modular development with reduxModular development with redux
Modular development with reduxJavier Lafora Rey
 
Understanding big data-drupalcamp
Understanding big data-drupalcampUnderstanding big data-drupalcamp
Understanding big data-drupalcampJavier Lafora Rey
 
API REST for beginners or why you should make your API understandable
API REST for beginners or why you should make your API understandableAPI REST for beginners or why you should make your API understandable
API REST for beginners or why you should make your API understandableJavier Lafora Rey
 
Ruby object model: A matter of life and death
Ruby object model: A matter of life and deathRuby object model: A matter of life and death
Ruby object model: A matter of life and deathJavier Lafora Rey
 

Más de Javier Lafora Rey (8)

An introduction to Vue.js
An introduction to Vue.jsAn introduction to Vue.js
An introduction to Vue.js
 
Modular development with redux
Modular development with reduxModular development with redux
Modular development with redux
 
Understanding big data-drupalcamp
Understanding big data-drupalcampUnderstanding big data-drupalcamp
Understanding big data-drupalcamp
 
API REST for beginners or why you should make your API understandable
API REST for beginners or why you should make your API understandableAPI REST for beginners or why you should make your API understandable
API REST for beginners or why you should make your API understandable
 
APIs para gente normal
APIs para gente normalAPIs para gente normal
APIs para gente normal
 
¿Por qué ruby on rails?
¿Por qué ruby on rails?¿Por qué ruby on rails?
¿Por qué ruby on rails?
 
Ruby object model: A matter of life and death
Ruby object model: A matter of life and deathRuby object model: A matter of life and death
Ruby object model: A matter of life and death
 
How to use git without rage
How to use git without rageHow to use git without rage
How to use git without rage
 

Último

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
 
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
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
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
 
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
 
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
 
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
 
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
 
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
 
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
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 

Último (13)

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
 
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
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
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
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
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
 
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
 
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)
 
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
 
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
 
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...
 
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
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 

REST y ROA introducción

  • 1. INTRODUCCIÓN A REST Y ROA (Resource Oriented Architecture)
  • 2. ¿Quién es este friki? Twitter: @elafo Github: eLafo
  • 3. HTTP ● Protocolo de envío de mensajes en la web ● El cliente envía una petición (request) ● El servidor devuelve una respuesta(response)
  • 4. Request ● Métodos ● Path ● Cabeceras ● Cuerpo
  • 5. Ejemplos de request POST /Earth/USA/Mount%20Rushmore HTTP/1.1 Host: maps.example.com Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= type=national-park&description=We%20visited%20on%203/5/2005 GET /index.html HTTP/1.1 Host: www.oreilly.com User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12)... Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,... Accept-Language: us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-15,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive
  • 6. Clasificación de métodos ● Métodos seguros ● Métodos idempotentes
  • 7. Listado de métodos ● GET ● PUT ● DELETE ● POST ● HEAD ● OPTIONS ● TRACE ● CONNECT ● UPDATE
  • 8. Response ● Código de respuesta ● Cabeceras ● Cuerpo
  • 9. Ejemplo de response HTTP/1.1 200 OK Date: Fri, 17 Nov 2006 15:36:32 GMT Server: Apache Last-Modified: Fri, 17 Nov 2006 09:05:32 GMT Etag: "7359b7-a7fa-455d8264 Accept-Ranges: bytes Content-Length: 43302 Content-Type: text/html X-Cache: MISS from www.oreilly.com Keep-Alive: timeout=15, max=1000 Connection: Keep-Alive <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> ... ●
  • 10. ¿Cómo se define un API? ● Qué hacer – Método HTTP – Path – Cuerpo ● Sobre qué – Path – Cuerpo
  • 11. Tipos de APIs ● RPC-Style ● REST ● REST-RPC Hybrid Restful web services – Leonard Richardson & Sam Ruby (O'reilly)
  • 12. APIs RPC-STYLE ● Todo en el cuerpo POST /rpc HTTP/1.1 Host: www.upcdatabase.com User-Agent: XMLRPC::Client (Ruby 1.8.4) Content-Type: text/xml; charset=utf-8 Content-Length: 158 Connection: keep-alive <?xml version="1.0" ?> <methodCall> <methodName>lookupUPC</methodName> ... </methodCall>
  • 13. APIs REST ● Acción → Método HTTP ● Scope → Path GET /hello.txt HTTP/1.1 Host: www.example.com
  • 14. APIs REST-RPC Hybrid (aka REST mis cojones 33) ● Todo en el path GET services/rest?api_key=xxx&method=flickr.photos.search&tags=penguin HTTP/1.1 Host: www.flickr.com
  • 15. ROA (Resource Oriented Architecture) Orientado a recursos (Nosotros decidimos qué es un recurso)
  • 16. ROA (Resource Oriented Architecture) Cada recurso ha de tener al menos una URI (addressability) /release/20120511 /users/elafo Truconsejo: mola que las URIs sean descriptivas – /metal/iron_maiden vs /23slhdb/0238ghs
  • 17. ROA (Resource Oriented Architecture) Un recurso puede tener varias URIs Una URI sólo para un recurso /release/20120511 /release/last Aunque apunten a la misma información, el concepto puede ser diferente
  • 18. ROA (Resource Oriented Architecture) ● Stateleness – Cada petición debe resolverse de forma aislada sin que afecten las anteriores
  • 19. ROA (Resource Oriented Architecture) ● Representaciones – Idea vs bytes – ¿Deberían todas las representaciones devolver la misma información?
  • 20. ROA (Resource Oriented Architecture) ● Hypermedia – Un recurso debería mostrar los recursos relacionados por medio de URIs a dichos recursos
  • 21. ROA(Resource Oriented Architecture) <?xml version='1.0' encoding='UTF-8'?> <ListAllMyBucketsResult xmlns='http://s3.amazonaws.com/doc/2006-03-01/'> <Owner> <ID>c0363f7260f2f5fcf38d48039f4fb5cab21b060577817310be5170e7774aad70</ID> <DisplayName>leonardr28</DisplayName> </Owner> <Buckets> <Bucket> <Name>crummy.com</Name> <URI>https://s3.amazonaws.com/crummy.com</URI> <CreationDate>2006-10-26T18:46:45.000Z</CreationDate> </Bucket> </Buckets> </ListAllMyBucketsResult>