SlideShare une entreprise Scribd logo
1  sur  31
Télécharger pour lire hors ligne
REST
Asier Marqués
@asiermarques
linkedin.com/in/asier
Director en Simettric
Director técnico en 4visionshq.com


#elcomite
#bilbostack
#pucelatechday
HTTP - RFC 2616

Request


Response
Request
GET /usuarios
Accept: text/html, application/json
Response
GET /usuarios
Status Code: 200
Content Type: application/json
Request
GET /usuarios
Accept: application/lechazo+xml
Response
GET /usuarios
Status Code: 415, unsupported media type
REST
Representational State Transfer


HTTP


Año 2000
Las reglas de oro
No guardar estado en el backend


Backend y cliente están desacoplados


Buen nombre de URIs


Uso correcto de HTTP
Richardson Madurity Model
Nivel 1 – Uso correcto de las URIs


Nivel 2 – Uso correcto de HTTP


Nivel 3 – Hypermedia
Nivel 1
Recursos y URIs
Cada información con la que queramos
trabajar es un recurso.


Usamos URLs, un tipo de URI que identifica y
localiza un recurso
Recursos
Un listado de usuarios   → /usuarios


Un usuario               → /usuarios/{id}
Nombrar recursos
Usamos nombres, no verbos


Utilizamos una estructura jerárquica


Evitamos añadir:
–   Nombres de formatos
–   Extensiones
–   Filtros, órdenes paginaciones
Incorrecto
Perfil de usuario    → /getUser/{id}
Edición de usuario   → /users/{id}/edit


Paginación de listado → /users/page/{page}


Relaciones           → /invoices/user/{id}
Correcto
Perfil de usuario      → /users/{id}
Edición de usuario     → /users/{id}


Paginación de listado → /users?page={page}


Relaciones             → /user/{id}/invoices
Formatos
Incorrecto
GET /user/{id}.xml
Accept: text/html


Correcto
GET /user/{id}
Accept: application/xml
Contenidos parciales
GET /usuario/{id}?campos=id,nombre,email
Status Code: 206
Nivel 2
Métodos HTTP
●   Leer                  → GET
●   Crear                 → POST
●   Editar                → PUT
●   Editar parcialmente   → PATCH
●   Eliminar              → DELETE
Códigos de estado HTTP
No reinventar la rueda
RFC 2616 – Sección 10


Tipos
–   Información                  → 1XX
–   Éxito                        → 2XX
–   Redirección, proxy o caché   → 3XX
–   Error de cliente             → 4XX
–   Error de servidor            → 5XX
Tipo de contenido HTTP

Accept



Content Type
Validación ETag HTTP
Etag


if-none-match


if-match
Nivel 3 - Hypermedia
Hypermedia
Enlazamos recursos.


Añadimos información adicional al recurso
para indicar cómo se relaciona con otros.


Utilizamos formatos propios.
GET /pedido/{id}
<pedido>
 <id>666</id>
 <estado>Procesado</estado>
 <links>
  <link rel=”factura”>
     http://lechazo.org/api/pedido/666/factura
  </link>
 </links>
</pedido>
GET /pedido/{id}
Request
Accept: application/custom+xml, application/xml

Response
Content Type: application/custom+xml
JSON HAL
JSON Hypertext Application Language
http://tools.ietf.org/html/draft-kelly-json-hal-00


{
    “id”: 666
    “_links”: {
        “factura”: { “href”: “http://lechazo.org/api/pedido/666/factura” }
    }
}
Versiones
En la URI:            → /api/v1/recurso


Como parámetro http   → /api/recurso?v=1.0


Como header http      → v=1 /api/recurso
Seguridad
Autenticación HTTP (:S)


Sistema propio basado en tokens


OAuth2


Gateways: Layer7, apigee enterprise, 3scale...


+ HTTPs (no es opcional)
Gracias!




@asiermarques
asier@simettric.com

Contenu connexe

En vedette

Interoperabilidad en android con APIs REST/JSON
Interoperabilidad en android con APIs REST/JSONInteroperabilidad en android con APIs REST/JSON
Interoperabilidad en android con APIs REST/JSONGDG Cali
 
Rest clase 4 - curso front-end 2014 - open webinars
Rest   clase 4 - curso front-end 2014 - open webinarsRest   clase 4 - curso front-end 2014 - open webinars
Rest clase 4 - curso front-end 2014 - open webinarsOpenWebinars.net
 
Representational State Transfer
Representational State TransferRepresentational State Transfer
Representational State TransferAlexei Skachykhin
 

En vedette (6)

API Centric
API CentricAPI Centric
API Centric
 
Rest schema design
Rest schema designRest schema design
Rest schema design
 
Interoperabilidad en android con APIs REST/JSON
Interoperabilidad en android con APIs REST/JSONInteroperabilidad en android con APIs REST/JSON
Interoperabilidad en android con APIs REST/JSON
 
Rest clase 4 - curso front-end 2014 - open webinars
Rest   clase 4 - curso front-end 2014 - open webinarsRest   clase 4 - curso front-end 2014 - open webinars
Rest clase 4 - curso front-end 2014 - open webinars
 
Cancer De Prostata
Cancer De ProstataCancer De Prostata
Cancer De Prostata
 
Representational State Transfer
Representational State TransferRepresentational State Transfer
Representational State Transfer
 

Similaire à Servicios REST - PucelaTechDay

Desarrollando con APIs
Desarrollando con APIsDesarrollando con APIs
Desarrollando con APIsArturo Garrido
 
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
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació WebCarlesMG57
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 
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
 
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
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apisCloudAppi
 
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02YAK2067
 
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
 

Similaire à Servicios REST - PucelaTechDay (20)

REST - deSymfony2012
REST - deSymfony2012REST - deSymfony2012
REST - deSymfony2012
 
Desarrollando con APIs
Desarrollando con APIsDesarrollando con APIs
Desarrollando con APIs
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Protocolos de internet
Protocolos de internetProtocolos de internet
Protocolos de internet
 
Introducció a les Aplicació Web
Introducció a les Aplicació WebIntroducció a les Aplicació Web
Introducció a les Aplicació Web
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Tecnologias Web Semantica
Tecnologias Web SemanticaTecnologias Web Semantica
Tecnologias Web Semantica
 
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
 
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
 
Protocol HTTP
Protocol HTTPProtocol HTTP
Protocol HTTP
 
Introducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLC
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apis
 
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02
Filtradocontenidowebcongnulinuxysquid 110414191512-phpapp02
 
PROTOCOLO HTTP
PROTOCOLO HTTPPROTOCOLO HTTP
PROTOCOLO HTTP
 
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
 
PHP. Tecnologías Web.
PHP. Tecnologías Web.PHP. Tecnologías Web.
PHP. Tecnologías Web.
 
Charla REST API
Charla REST APICharla REST API
Charla REST API
 
Fundamentos de la web
Fundamentos de la webFundamentos de la web
Fundamentos de la web
 

Plus de Asier Marqués

Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyAsier Marqués
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaSAsier Marqués
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPressAsier Marqués
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Asier Marqués
 
Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetAsier Marqués
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsAsier Marqués
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgAsier Marqués
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Asier Marqués
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAsier Marqués
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinAsier Marqués
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVCAsier Marqués
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetAsier Marqués
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012Asier Marqués
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbaoAsier Marqués
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoAsier Marqués
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Asier Marqués
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesAsier Marqués
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft WindowsAsier Marqués
 

Plus de Asier Marqués (20)

Desarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
 
Creando Productos SaaS
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaS
 
Introducción a Bolt
Introducción a BoltIntroducción a Bolt
Introducción a Bolt
 
WordCamp Cantabria - Código mantenible con WordPress
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
 
PHP en el 2015
PHP en el 2015PHP en el 2015
PHP en el 2015
 
Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
 
Ejecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en InternetEjecución de servicios digitales y negocios en Internet
Ejecución de servicios digitales y negocios en Internet
 
Desarrollo de Mobile Web Apps
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
 
Presentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.org
 
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1
 
Albero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarinAlbero tech Day - De web a móvil con xamarin
Albero tech Day - De web a móvil con xamarin
 
Bilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con XamarinBilbostack 2014: De web a móvil con Xamarin
Bilbostack 2014: De web a móvil con Xamarin
 
Silex para aplicaciones web MVC
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
 
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
 
BilboStack - Php en el 2012
BilboStack - Php en el 2012BilboStack - Php en el 2012
BilboStack - Php en el 2012
 
4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao
 
Proyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbao
 
Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
 
Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalables
 
Sistemas Microsoft Windows
Sistemas Microsoft WindowsSistemas Microsoft Windows
Sistemas Microsoft Windows
 

Servicios REST - PucelaTechDay