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

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramDIDIERFERNANDOGUERRE
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxaylincamaho
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfSergioMendoza354770
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel tallerValentinaTabares11
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 

Último (20)

Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Explorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ramExplorando la historia y funcionamiento de la memoria ram
Explorando la historia y funcionamiento de la memoria ram
 
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptxMedidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
Medidas de formas, coeficiente de asimetría y coeficiente de curtosis.pptx
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdfPARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
PARTES DE UN OSCILOSCOPIO ANALOGICO .pdf
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
Excel (1) tecnologia.pdf trabajo Excel taller
Excel  (1) tecnologia.pdf trabajo Excel tallerExcel  (1) tecnologia.pdf trabajo Excel taller
Excel (1) tecnologia.pdf trabajo Excel taller
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 

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>