SlideShare a Scribd company logo
1 of 33
Download to read offline
REST
SOAP
BUSINESS
CORE
● Especificación de
protocolo
● Intercambio de
información mediante
XML
● Independiente del
protocolo de transporte
● Ampliamente usado en
la industria
● Excesivamente verboso
REST
Representational State Transfer
● Orientado a recursos
● Uso del protocolo HTTP (cliente-servidor)
● Separation of Concerns
● Stateless
● Mecanismos de caché
● Interfaz uniforme
Rest
HTTP
TCP
REST
Nuestro ejemplo
Nuestro ejemplo
Cuenta A Cuenta B
Transferencia
Saldo Saldo
HTTP
Petición
● Línea de petición
● Cabecera
● Cuerpo (opcional)
Respuesta
● Línea de estado
● Cabecera
● Cuerpo (opcional)
HTTP/1.1 200 OK
{ "response": “yeah!”}
POST /accountsService HTTP/1.1
{ "request": "give it to me!" }
HTTP
SH
Bank
POST /accountsService HTTP/1.1
{ "service": "getAccounts" }
HTTP/1.1 200 OK
{ "response": [
{"account":
{"id": "cuentaA", "balance": "25M"}},
{"account":
{"id": "cuentaB", "balance": "12K"}}
]
}
HTTP
SH
Bank
POST /transferService HTTP/1.1
{
"service": "doTransfer",
"fromAccount": "cuentaA",
"toAccount": "cuentaB",
"amount": 1500,
"message": "Tengo un API rara."
}
HTTP/1.1 200 OK
{ "response": "ok" }
HTTP
SH
Bank
POST /accountsService HTTP/1.1
{ "service": "getAccounts" }
HTTP/1.1 200 OK
{ "response": [
{"account":
{"id": "cuentaA", "balance": "25M"}},
{"account":
{"id": "cuentaB", "balance": "13.5K"}}
]
}
Recursos
● Uso de URI’s para identificar unívocamente un recurso
● Se usan URL’s para ello
● Podemos incluir en la cabecera negociación de
contenidos
Recursos
SH
Bank
POST /accounts HTTP/1.1
Content-type: application/json; charset=utf-8
{ "service": "getAccounts" }
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance":
"25M"},
{"id": "cuentaB", "balance": "12K"}
]
}
Recursos
SH
Bank
POST /accounts/cuentaA HTTP/1.1
{ "service": "getAccount" }
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"}
]
}
Recursos
SH
Bank
POST /transfers HTTP/1.1
{
"service": "doTransfer",
"transfer": {
"name": 1,
"from": "cuentaA",
"to": "cuentaB",
"amount": 1500,
"message": "Tengo un API psché."
}
}
HTTP/1.1 200 OK
{ "response": "ok" }
Recursos
SH
Bank
POST /accounts HTTP/1.1
{ "service": "getAccounts" }
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
]
}
Recursos
SH
Bank
POST /transfers/1 HTTP/1.1
{ "service": "getTransfer" }
HTTP/1.1 200 OK
{ "transfer": {
"name": 1,
"from": "cuentaA",
"to": "cuentaB",
"amount": 1500,
"message": "Tengo un API psché."
}
}
Recursos
¿Y si queremos devolver una mensaje de error?
{
"error": {
"name": "account.from.invalid",
"message": "La cuenta de origen no es válida"
}
}
Verbos HTTP
Los verbos https deben ser:
● Seguros
● Idempotentes
Verbo Seguro Idempotente
GET Sí Sí
POST No No
PUT No Sí
DELETE No Sí
Verbos HTTP
SH
Bank
GET /accounts HTTP/1.1
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
]
}
Verbos HTTP
SH
Bank
POST /transfers HTTP/1.1
{
"transfer": {
"from": "cuentaA",
"to": "cuentaB",
"amount": 1500,
"message": "Tengo un API Restful"
}
}
HTTP/1.1 200 OK
{ "response": "ok" }
Verbos HTTP
SH
Bank
GET /accounts HTTP/1.1
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
]
}
Verbos HTTP
Códigos de respuesta
2xx Éxito
➔ 200 Ok (puede adjuntar cuerpo)
➔ 204 No content
3xx Es necesaria una acción por parte del usuario para terminar
➔ 301 Moved permanently (adjunta cuerpo)
➔ 304 Not modified
4xx Error del cliente
➔ 404 Not found
➔ 409 Conflict (puede adjuntar cuerpo)
5xx Error en el servidor
➔ 504 Timeout
Hypermedia
SH
Bank
GET /accounts HTTP/1.1
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
],
"links": [
{"href": "/transfer",
"rel": "transfer",
"method": "POST"},
{"href": "/accounts",
"rel": "create",
"method": "POST"}
]}
Modelo de madurez de Richardson
● Nivel 1
Usar HTTP como protocolo
● Nivel 2
Obtener recursos y no POX
● Nivel 3
Usar los verbos HTTP
● Nivel 4
HATEOAS (Hypertext as the engine of the application state)
Recomendaciones
● Favorecer el principio de mínima sorpresa.
● Mantener la uniformidad.
● Documentación precisa.
o Cuerpos
o Códigos de error
o Parámetros
● Si existe alguna duda, buscar
implementaciones de referencia.
Implementaciones de referencia
● Paypal
● Twitter
● Amazon S3
● Facebook
● Google Apis
● Instagram
Frameworks
● Spring MVC
● RestEasy
● Ruby On Rails
● Laravel
● Yii
● WCF .Net
Distintos niveles de caché
Caché
Escalado
Caché distribuida
APIAPI API
Estrategias de testeo
Respuestas:
● Tipado
● Formato
● Consistencia
Funcionalidad:
● BDD (Cucumber)
● Tests de
integración
VUESTRO API ES VUESTRA TARJETA DE VISITA
Dudas
GRACIAS

More Related Content

What's hot

API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)Daryl Moreno
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Definición de apis con swagger
Definición de apis con swaggerDefinición de apis con swagger
Definición de apis con swaggerj_copete
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RSVortexbird
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey Vortexbird
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCVortexbird
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsHernan Rengifo
 
8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Desafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESBDesafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESBWSO2
 
Web services GeneXus Tilo
Web services GeneXus TiloWeb services GeneXus Tilo
Web services GeneXus TiloGeneXus
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con AjaxDesarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con Ajaxjuliocasal
 

What's hot (20)

Simplemente REST
Simplemente RESTSimplemente REST
Simplemente REST
 
API REST conceptos (Rails-api)
API REST conceptos (Rails-api)API REST conceptos (Rails-api)
API REST conceptos (Rails-api)
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
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)
 
Arquitectura REST
Arquitectura RESTArquitectura REST
Arquitectura REST
 
Definición de apis con swagger
Definición de apis con swaggerDefinición de apis con swagger
Definición de apis con swagger
 
Web services restful con JAX-RS
Web services restful con JAX-RSWeb services restful con JAX-RS
Web services restful con JAX-RS
 
Servicios Rest con Jersey
Servicios Rest con Jersey Servicios Rest con Jersey
Servicios Rest con Jersey
 
Servicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVCServicios Web Rest con Spring MVC
Servicios Web Rest con Spring MVC
 
Rest Conf Rails
Rest Conf RailsRest Conf Rails
Rest Conf Rails
 
introduccion a Ajax
introduccion a Ajaxintroduccion a Ajax
introduccion a Ajax
 
Web Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAPWeb Services JAX-RS RESTful y SOAP
Web Services JAX-RS RESTful y SOAP
 
Servicios web
Servicios webServicios web
Servicios web
 
Java WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRsJava WebServices JaxWS - JaxRs
Java WebServices JaxWS - JaxRs
 
8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Desafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESBDesafiando las transformaciones con WSO2 ESB
Desafiando las transformaciones con WSO2 ESB
 
Web services GeneXus Tilo
Web services GeneXus TiloWeb services GeneXus Tilo
Web services GeneXus Tilo
 
Desarrollo web
Desarrollo webDesarrollo web
Desarrollo web
 
Facelets
FaceletsFacelets
Facelets
 
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con AjaxDesarrollando Una Mejor Experiencia De Usuario Con Ajax
Desarrollando Una Mejor Experiencia De Usuario Con Ajax
 

Similar to RESTful API Banking Example

Descripción de la interfaz de programación
Descripción de la interfaz de programaciónDescripción de la interfaz de programación
Descripción de la interfaz de programaciónEneldo Serrata
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Juan Carlos Gonzalez
 
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
 

Similar to RESTful API Banking Example (8)

Introduction AJAX
Introduction AJAXIntroduction AJAX
Introduction AJAX
 
Descripción de la interfaz de programación
Descripción de la interfaz de programaciónDescripción de la interfaz de programación
Descripción de la interfaz de programación
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Protocol HTTP
Protocol HTTPProtocol HTTP
Protocol HTTP
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera api
 
Servicios web
Servicios webServicios web
Servicios web
 
Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013Novedades en Desarrollo en SharePoint 2013
Novedades en Desarrollo en SharePoint 2013
 
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
 

Recently uploaded

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
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
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
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
 
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 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
 
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
 
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
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
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
 
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
 
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
 
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
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 

Recently uploaded (20)

La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
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
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
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
 
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 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
 
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
 
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
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
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
 
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
 
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
 
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
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
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
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 

RESTful API Banking Example