REST - deSymfony2012

Asier Marqués
Asier MarquésSimettric Internet Technologies at Simettric Internet Technologies S.L.u.
REST - deSymfony2012
REST - deSymfony2012
Hola
Asier Marqués
Simettric, Fundador.
4VisionsManager.com, Socio y director técnico.
Desacoplar el cliente del backend
• Mayor escalabilidad

• Separación de problemas

• División de especialidades

• API uniforme para todos los clientes
REST
REST
REpresentational State Transfer

Un estilo de arquitectura para
desarrollar aplicaciones web distribuidas
que se basa en el uso del protocolo
HTTP e Hypermedia.

Definido en el 2000 por Roy Fielding
Una buena API REST
No tiene estado en el backend.

Está desacoplado del cliente.

Dispone de una interfaz uniforme
(basada en URIs)
Richardson Maturity Model
# Nivel 1 (Pobre):
  Se usan URIs para identificar recursos

# Nivel 2 (Medio):
  Se usa el protocolo HTTP adecuadamente

# Nivel 3 (Óptimo):
  Se implementa hypermedia.

http://www.crummy.com/writing/speaking/2008-QCon/act3.html
Recursos, URIs, hypermedia?
REST: Nivel 1



URIs
URI, uniform resource identifier
              Identifica un recurso

              Pueden identificar un
              recurso por nombre
              (URN) o por
              localización (URL)
Recurso?
Recursos

/users        Listado de usuarios

/users/{id}   Un usuario
Reglas para identificar recursos
• Se debe *identificar* un recurso!

• Las URIs se construyen con nombres
  nunca con verbos

• Deberían tener una estructura
  jerárquica
URIs incorrectas
Nunca se usan verbos
/getUser/{id}
/users/{id}/edit
/login
Deben ser jerárquicas
/invoices/user/{id}
Identifican un recurso
/invoices/page/2
URIs válidas
Nunca se usan verbos
/users/{id}
/users/{id}
/access-token
Deben ser jerárquicas
/user/{id}/invoices
Identifican un recurso
/invoices/?page=2
Formatos
No se debería indicar el formato en la
URI, el formato no identifica al recurso

/invoices.html
/invoices.css
/invoices.xml
Para eso está HTTP

Request:
GET accept: text/html /invoices

Response:
200 content-type: text/html

Response:
406 Not Acceptable
REST: Nivel 2



HTTP
como framework
HTTP como Framework
•   Protocolo de transporte
•   Métodos
•   Códigos de estado
•   Content-Type
•   Gestión de versiones
•   Cache
HTTP: Métodos
GET          Recupera el recurso
POST         Crea un nuevo recurso
PUT          Edita el recurso
POST/PATCH   Edita el recurso parcialmente
DELETE       Elimina el recurso
Métodos
Request: GET /users
Response: 200 content-type:application/json


Request: POST /users
Response: 201 content-type:application/json
Métodos
Request: GET /users/11
Response: 200 content-type:application/json

Request: PUT /users/11
Response: 200 content-type:application/json

Request: DELETE /users/11
Response: 204 no content
HTTP: Códigos de estado
REST - deSymfony2012
HTTP: Content-Type y Accept
Content-Type y Accept
• Content-Type nos dice qué tipo de
  representación tiene el recurso al que
  estamos accediendo.

• Con Accept le decimos qué tipo de
  representación queremos.
HTTP: ETag
HTTP: Etag y Last-Modified
• Con Etag podemos controlar si el recurso se
  ha modificado desde la última vez que
  accedimos con un hash.

• If-None-Match se encarga de indicar que la
  petición sea efectiva siempre y cuando el
  eTag sea distinto, If-Match hace lo inverso.

• Last-Modified/If-Modified-Since permiten
  saber si un recurso se ha modificado en base
  a una fecha.
REST: Nivel 3


Hypermedia
Hypermedia?
Hypermedia
• Se basa en la idea de enlazar
  recursos.

• Para que sea útil, el cliente debe
  saber que en la respuesta hay
  contenido hypermedia.

• En content-type es clave para esto
<bill rel=“http://api.servicio.com/doc/order”>
 <id>666</id>
 <currency>EUR</currency>
 <items>..</items>
 <amount>67</amount>
 <status>UNPAID</status>
  <links>
      <link rel=“payment”>
          http://api.servicio.com/order/666/payment
      </link>
      <link rel=“cancel”>
          http://api.servicio.com/order/666/cancelation
      </link>
  </links>
</bill>
Hypermedia
¿Content-Type: text/xml?
Hypermedia
    Content-Type: text/xml


      Content-Type:
application/servicio+xml
RFC4627
  JSON Hypertext Application Language
 Content-Type: application/hal+json
 {
   "_links": {
         "self":          {"href": "/orders/523" },
         "warehouse": {"href": "/warehouse/56" },
         " invoice":      {"href": "/invoices/873“}
      },
    "currency": "USD",
    "status":        "shipped",
    "total":         10.20
 }
http://tools.ietf.org/html/draft-kelly-json-hal-00
Herramientas

Curl

RestClient

Swagger UI   (swagger.wordnik.com)
Servicios

3scale.com

apigee.com
Crear un Framework REST
Puntos clave de un framework
• Facilitarnos el trabajo

• Definir una forma de trabajo común

• Reducir tareas repetitivas
Symfony2 Components
HTTP Foundation

Routing

ClassLoader

Console
HTTP Foundation
• Se basa en dos objetos: Request y
  Response

• Nos aisla de variables de entorno,
  servidor, headers…
Routing
• Podemos definir URIs mediante
  patrones

• Requisitos en las URIs de métodos
  HTTP y parámetros.

• Varios tipos de Matcher para
  identificar la URI actual.
Console
• Nos permite crear comandos para
  shell

• Cada comando es una clase, permite
  definir parámetros, atributos para el
  comando

• Los menús se generan de forma
  automática
Crear un framework REST
• Crearlo sobre una aplicación real

• Utilizar el componente Console para
  automatizar tareas repetitivas

• Pensar en la organización del código
Crear un framework REST
• Eventos

• Permitir extensibilidad

• Configuraciones, diferentes entornos

• Logs y gestión de excepciones
Crear un framework REST
• Sólo lo estrictamente necesario en el
  core

• Documentación

• Cobertura de tests

• Aprende de otros
C
O
N
V
E
N
C
I
Ó
N
REST - deSymfony2012
REST - deSymfony2012
Documentación
Gracias :)



@asiermarques
1 of 52

Recommended

Qué es eso de OAuth y como se implementa en Symfony2 (y otros) by
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)Qué es eso de OAuth y como se implementa en Symfony2 (y otros)
Qué es eso de OAuth y como se implementa en Symfony2 (y otros)Miguel Ángel Sánchez Chordi
4.7K views45 slides
Oauth (Open Authorization) by
Oauth (Open Authorization)Oauth (Open Authorization)
Oauth (Open Authorization)Kevyn Aguilar
4.1K views17 slides
OAuth 2.0 (Spanish) by
OAuth 2.0 (Spanish)OAuth 2.0 (Spanish)
OAuth 2.0 (Spanish)marcwan
6.1K views36 slides
GFI - Seguridad en tus APIs by
GFI - Seguridad en tus APIsGFI - Seguridad en tus APIs
GFI - Seguridad en tus APIsGFI Informática
7.2K views17 slides
Entendiendo o auth by
Entendiendo o authEntendiendo o auth
Entendiendo o authEduard Tomàs
3K views20 slides
Introducción al Protocolo OAuth 2.0 by
Introducción al Protocolo OAuth 2.0Introducción al Protocolo OAuth 2.0
Introducción al Protocolo OAuth 2.0Álvaro Alonso González
1.6K views29 slides

More Related Content

Similar to REST - deSymfony2012

Introducción a REST - SymfonyVLC by
Introducción a REST - SymfonyVLCIntroducción a REST - SymfonyVLC
Introducción a REST - SymfonyVLCMiguel Ángel Sánchez Chordi
3.5K views74 slides
Rest by
RestRest
RestIgnacio Muñoz Vicente
1.3K views21 slides
Servicios REST - PucelaTechDay by
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDayAsier Marqués
1.7K views31 slides
APIs REST #devfestBilbao by
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbaoAsier Marqués
1.3K views45 slides
Taller Android Party: Automatic API REST + Notificaciones PUSH by
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
4.6K views66 slides
S7-DAW-2022S1.pptx by
S7-DAW-2022S1.pptxS7-DAW-2022S1.pptx
S7-DAW-2022S1.pptxLuis Fernando Aguas Bucheli
51 views30 slides

Similar to REST - deSymfony2012(20)

Servicios REST - PucelaTechDay by Asier Marqués
Servicios REST - PucelaTechDayServicios REST - PucelaTechDay
Servicios REST - PucelaTechDay
Asier Marqués1.7K views
RESTful Para todos by Diego Sapriza by .NET Conf UY
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
.NET Conf UY605 views
Integración de Tecnologías y Plataformas.pptx by LuisTenorio42
Integración de Tecnologías y Plataformas.pptxIntegración de Tecnologías y Plataformas.pptx
Integración de Tecnologías y Plataformas.pptx
LuisTenorio424 views
Fundamentos para el diseño de una RESTful API pragmática by LeoWong91
Fundamentos para el diseño de una RESTful API pragmáticaFundamentos para el diseño de una RESTful API pragmática
Fundamentos para el diseño de una RESTful API pragmática
LeoWong91186 views
API REST conceptos (Rails-api) by Daryl Moreno
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
Daryl Moreno860 views
Desarrollando un API con REST by Alex Puig
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
Alex Puig15.9K views
Creacion Apirest Back{4}app by blackmatt
Creacion Apirest Back{4}appCreacion Apirest Back{4}app
Creacion Apirest Back{4}app
blackmatt194 views

More from Asier Marqués

Desarrollo código mantenible en WordPress utilizando Symfony by
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
3.5K views41 slides
Creando Productos SaaS by
Creando Productos SaaSCreando Productos SaaS
Creando Productos SaaSAsier Marqués
739 views42 slides
Introducción a Bolt by
Introducción a BoltIntroducción a Bolt
Introducción a BoltAsier Marqués
893 views49 slides
WordCamp Cantabria - Código mantenible con WordPress by
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPressAsier Marqués
1.4K views38 slides
PHP en el 2015 by
PHP en el 2015PHP en el 2015
PHP en el 2015Asier Marqués
1.3K views37 slides
Código mantenible, en Wordpress. by
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.Asier Marqués
1.4K views63 slides

More from Asier Marqués(20)

Desarrollo código mantenible en WordPress utilizando Symfony by Asier Marqués
Desarrollo código mantenible en WordPress utilizando SymfonyDesarrollo código mantenible en WordPress utilizando Symfony
Desarrollo código mantenible en WordPress utilizando Symfony
Asier Marqués3.5K views
WordCamp Cantabria - Código mantenible con WordPress by Asier Marqués
WordCamp Cantabria  - Código mantenible con WordPressWordCamp Cantabria  - Código mantenible con WordPress
WordCamp Cantabria - Código mantenible con WordPress
Asier Marqués1.4K views
Código mantenible, en Wordpress. by Asier Marqués
Código mantenible, en Wordpress.Código mantenible, en Wordpress.
Código mantenible, en Wordpress.
Asier Marqués1.4K views
Ejecución de servicios digitales y negocios en Internet by Asier Marqués
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
Asier Marqués1.2K views
Desarrollo de Mobile Web Apps by Asier Marqués
Desarrollo de Mobile Web AppsDesarrollo de Mobile Web Apps
Desarrollo de Mobile Web Apps
Asier Marqués1.3K views
Presentación de la plataforma abierta Ubiqarama.org by Asier Marqués
Presentación de la plataforma abierta Ubiqarama.orgPresentación de la plataforma abierta Ubiqarama.org
Presentación de la plataforma abierta Ubiqarama.org
Asier Marqués740 views
Calidad, IC y Entrega contínua en Symfony2 con Azure - Parte 1 by Asier Marqués
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
Asier Marqués663 views
Albero tech Day - De web a móvil con xamarin by Asier Marqués
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
Asier Marqués495 views
Bilbostack 2014: De web a móvil con Xamarin by Asier Marqués
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
Asier Marqués842 views
Silex para aplicaciones web MVC by Asier Marqués
Silex para aplicaciones web MVCSilex para aplicaciones web MVC
Silex para aplicaciones web MVC
Asier Marqués2.5K views
Desarrollo de aplicaciones Windows8 para desarrolladores de internet by Asier Marqués
Desarrollo de aplicaciones Windows8 para desarrolladores de internetDesarrollo de aplicaciones Windows8 para desarrolladores de internet
Desarrollo de aplicaciones Windows8 para desarrolladores de internet
Asier Marqués472 views
4VisionsManager en WebDevBilbao by Asier Marqués
4VisionsManager en WebDevBilbao4VisionsManager en WebDevBilbao
4VisionsManager en WebDevBilbao
Asier Marqués509 views
Proyectos fallidos: Rooms.fm en #webdevbilbao by Asier Marqués
Proyectos fallidos: Rooms.fm en #webdevbilbaoProyectos fallidos: Rooms.fm en #webdevbilbao
Proyectos fallidos: Rooms.fm en #webdevbilbao
Asier Marqués697 views
Rendimiento en aplicaciones web con Symfony2 by Asier Marqués
Rendimiento en aplicaciones web con Symfony2Rendimiento en aplicaciones web con Symfony2
Rendimiento en aplicaciones web con Symfony2
Asier Marqués2.7K views
Symfony, cloud computing y web escalables by Asier Marqués
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalables
Asier Marqués568 views

Recently uploaded

MakeCode by
MakeCodeMakeCode
MakeCodeCoffe9
6 views3 slides
PostCall: Encuestas telefónicas post llamada by
PostCall: Encuestas telefónicas post llamadaPostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamadaOpenDireito
6 views15 slides
Manual Slideshare.pdf by
Manual Slideshare.pdfManual Slideshare.pdf
Manual Slideshare.pdfnikita314322
13 views10 slides
Fundamentos De Electricidad y Electrónica equipo 5.pdf by
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdfCamilaCordoba30
15 views14 slides
proyecto lavadora.pdf by
proyecto  lavadora.pdfproyecto  lavadora.pdf
proyecto lavadora.pdfCamilaCordoba30
11 views5 slides
VIDEO INFORMATICA.pptx by
VIDEO INFORMATICA.pptxVIDEO INFORMATICA.pptx
VIDEO INFORMATICA.pptxhenryruidiaz
6 views12 slides

Recently uploaded(20)

MakeCode by Coffe9
MakeCodeMakeCode
MakeCode
Coffe96 views
PostCall: Encuestas telefónicas post llamada by OpenDireito
PostCall: Encuestas telefónicas post llamadaPostCall: Encuestas telefónicas post llamada
PostCall: Encuestas telefónicas post llamada
OpenDireito6 views
Fundamentos De Electricidad y Electrónica equipo 5.pdf by CamilaCordoba30
Fundamentos De Electricidad y Electrónica equipo 5.pdfFundamentos De Electricidad y Electrónica equipo 5.pdf
Fundamentos De Electricidad y Electrónica equipo 5.pdf
CamilaCordoba3015 views
Fundamentos de electricidad y electrónica -1.pdf by SofiCneo1
Fundamentos de electricidad y electrónica -1.pdfFundamentos de electricidad y electrónica -1.pdf
Fundamentos de electricidad y electrónica -1.pdf
SofiCneo111 views
Probando aplicaciones basadas en LLMs.pdf by Federico Toledo
Probando aplicaciones basadas en LLMs.pdfProbando aplicaciones basadas en LLMs.pdf
Probando aplicaciones basadas en LLMs.pdf
Federico Toledo44 views
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf by 8m6zpwytgs
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdffundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf
fundamentosdeelectricidadyelectronica-231021044044-6e7cadfc.pdf
8m6zpwytgs8 views
Excel avanzado.docx by Xian11
Excel avanzado.docxExcel avanzado.docx
Excel avanzado.docx
Xian117 views
Google alternativo, para volar by corpbracat
Google alternativo, para volarGoogle alternativo, para volar
Google alternativo, para volar
corpbracat8 views
Tarea Práctica web de la sesión 14.pptx by illanlir
Tarea Práctica web de la sesión 14.pptxTarea Práctica web de la sesión 14.pptx
Tarea Práctica web de la sesión 14.pptx
illanlir12 views
Recusos Multimedia y Wed 2.0.pptx by henryruidiaz
Recusos Multimedia  y Wed 2.0.pptxRecusos Multimedia  y Wed 2.0.pptx
Recusos Multimedia y Wed 2.0.pptx
henryruidiaz5 views

REST - deSymfony2012