Los últimos diez años han visto unos cambios drásticos en la forma de entender y diseñar las arquitecturas para las aplicaciones web. REST irrumpió a principios de la década pasada como una técnica para modelar el interfaz de estas aplicaciones ganando notoriedad sobre otros conceptos y convirtiéndose en un estándar de facto. En la charla, intentaremos aterrizar esta filosofía de desarrollo para aquellos que nunca se han enfrentado a ella, al mismo tiempo que hablaremos de algunos temas algo más avanzados.
Una pequeña sinopsis de lo que trataremos:
1. Introducción
2. Modelo de madurez de Richardson
• HTTP
• Recursos
• Verbos
• HATEOAS
3. Estrategias de cacheo
4. Escalabilidad
5. Estrategias de testeo
Workshop sobre APIs realizado el 27 de abril en el Centro de Innovación de BBVA. En este evento hemos visto los detalles del funcionamiento, gestión de errores y conceptos de seguridad aplicados a APIs.
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCParadigma Digital
En este seminario se impartirá una introducción al concepto detrás de la tecnología REST. Adicionalmente, se introducirá al asistente a la implementación de un servicio REST, usando para ello el stack que ofrece el framework Spring, y mas concretamente las nuevas versiones de Spring MVC”. Con este seminario abrimos el nuevo curso 2012/2013, en el que Paradigma irá cada tres semanas aproximadamente ofreciendo una temática nueva.
Más información: http://www.paradigmatecnologico.com/seminarios/seminario-servicios-rest-bases-de-la-tecnologia-y-soporte-con-spring-mvc/
Workshop sobre APIs realizado el 27 de abril en el Centro de Innovación de BBVA. En este evento hemos visto los detalles del funcionamiento, gestión de errores y conceptos de seguridad aplicados a APIs.
SEMINARIO: Servicios REST. Bases de la tecnología y soporte con Spring MVCParadigma Digital
En este seminario se impartirá una introducción al concepto detrás de la tecnología REST. Adicionalmente, se introducirá al asistente a la implementación de un servicio REST, usando para ello el stack que ofrece el framework Spring, y mas concretamente las nuevas versiones de Spring MVC”. Con este seminario abrimos el nuevo curso 2012/2013, en el que Paradigma irá cada tres semanas aproximadamente ofreciendo una temática nueva.
Más información: http://www.paradigmatecnologico.com/seminarios/seminario-servicios-rest-bases-de-la-tecnologia-y-soporte-con-spring-mvc/
Internet hoy en día, es un sistema muy grande, distribuido, y con piezas en cada uno de los rincones del mundo. Conectar cada uno de los componentes no es una tarea fácil, ni mucho menos sencilla. En esta charla hablaremos de los beneficios que la arquitectura de diseño REST le trajo a la web, mostrando ejemplos concretos sobre su uso, y casos de éxito. Además, realizaremos una introducción de los conceptos básicos, y mostraremos una serie de pasos y consejos para crear aplicaciones REST, y entender aquellas que se ofrecen a lo largo de la web. Finalmente, dedicaremos un momento a comentar sobre los principales agregados que tiene REST, que hacen de la arquitectura algo mejor y más completo. Hablaremos de autenticación y seguridad, paginado, manejo de errores, y más.
Principios básicos de la Arquitectura Rest, haciendo especial hincapié en las 6 restricciones que permiten crear API altamente escalables (Uniform Interface, Stateless, Cacheable, Client-Server, Layered System y Code on Demand).
Estas restricciones son la base de la Arquitectura REST y aplicarlas nos ayudaran a conseguir buenos diseño: correcto nombrado de los servicios, recursos, aplicar el método (GET, POST, PUT, DELETE) apropiado a la acción, descubrir recursos basándonos únicamente en las respuestas del servidor (HATEOAS), ..
Además, conoceremos el Modelo de Madurez Richarson que nos permite conocer en que punto nos encontramos dentro de la arquitectura, algunos antipatrones de diseño y ejemplos de API REST (Twitter, Facebook).
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
Un WebService es una pieza de software identificada por un URI (Uniform Resource Identifier).
Su medio de comunicación se fundamenta en el uso de XML, TEXT, JSON
XML
XML Namespace, XML Schema, Xpath, XSLT.
HTTP, JSON
vortexbird
http://wso2.com/library/partner-webinar/2015/09/desafiando-las-transformaciones-con-wso2-esb/
En este webinar explicaremos las mejores prácticas a la hora de transformar los mensajes de nuestros servicios con WSO2 ESB. Como cambiar el formato del mensaje (por ejemplo de XML a JSON), como crear mensajes desde cero o como modificar mensajes utilizando las diferentes herramientas que nos ofrece WSO2 ESB.
Payload factory mediator
XSLT 1.0/2.0
XPath
XQuery
Smooks
Javascript
Finalmente realizaremos un estudio para determinar como se comportan, en términos de rendimiento, estas transformaciones en situaciones de alto volumen de mensajes.
Descripción de la interfaz de programaciónEneldo Serrata
Consiste en un dispositivo con el cual las aplicaciones web, se pueden comunicar con las impresoras fiscales por medio a un API que les ofrece todas la funciones y de esta forma pueda interactuar con la impresora desde el browser, es una excelente solución para todos aquellos programadores que quieran implementar las impresoras fiscales desde sus aplicaciones web o por medio a una red.NOTA: En proceso de homologación y por el momento solo funciona com impresoras EPSON.
Internet hoy en día, es un sistema muy grande, distribuido, y con piezas en cada uno de los rincones del mundo. Conectar cada uno de los componentes no es una tarea fácil, ni mucho menos sencilla. En esta charla hablaremos de los beneficios que la arquitectura de diseño REST le trajo a la web, mostrando ejemplos concretos sobre su uso, y casos de éxito. Además, realizaremos una introducción de los conceptos básicos, y mostraremos una serie de pasos y consejos para crear aplicaciones REST, y entender aquellas que se ofrecen a lo largo de la web. Finalmente, dedicaremos un momento a comentar sobre los principales agregados que tiene REST, que hacen de la arquitectura algo mejor y más completo. Hablaremos de autenticación y seguridad, paginado, manejo de errores, y más.
Principios básicos de la Arquitectura Rest, haciendo especial hincapié en las 6 restricciones que permiten crear API altamente escalables (Uniform Interface, Stateless, Cacheable, Client-Server, Layered System y Code on Demand).
Estas restricciones son la base de la Arquitectura REST y aplicarlas nos ayudaran a conseguir buenos diseño: correcto nombrado de los servicios, recursos, aplicar el método (GET, POST, PUT, DELETE) apropiado a la acción, descubrir recursos basándonos únicamente en las respuestas del servidor (HATEOAS), ..
Además, conoceremos el Modelo de Madurez Richarson que nos permite conocer en que punto nos encontramos dentro de la arquitectura, algunos antipatrones de diseño y ejemplos de API REST (Twitter, Facebook).
Transferencia de Estado Representacional (Representational State Transfer) o REST
Originado en el año 2000 por el doctor Roy Fielding en la Universidad de California en su tesis doctoral
Tesis “Estilos de Arquitectura y el Diseño de Arquitecturas de Software basadas en Redes”
Principios arquitectónicos de software para usar a la Web como una plataforma de Procesamiento Distribuido
Un WebService es una pieza de software identificada por un URI (Uniform Resource Identifier).
Su medio de comunicación se fundamenta en el uso de XML, TEXT, JSON
XML
XML Namespace, XML Schema, Xpath, XSLT.
HTTP, JSON
vortexbird
http://wso2.com/library/partner-webinar/2015/09/desafiando-las-transformaciones-con-wso2-esb/
En este webinar explicaremos las mejores prácticas a la hora de transformar los mensajes de nuestros servicios con WSO2 ESB. Como cambiar el formato del mensaje (por ejemplo de XML a JSON), como crear mensajes desde cero o como modificar mensajes utilizando las diferentes herramientas que nos ofrece WSO2 ESB.
Payload factory mediator
XSLT 1.0/2.0
XPath
XQuery
Smooks
Javascript
Finalmente realizaremos un estudio para determinar como se comportan, en términos de rendimiento, estas transformaciones en situaciones de alto volumen de mensajes.
Descripción de la interfaz de programaciónEneldo Serrata
Consiste en un dispositivo con el cual las aplicaciones web, se pueden comunicar con las impresoras fiscales por medio a un API que les ofrece todas la funciones y de esta forma pueda interactuar con la impresora desde el browser, es una excelente solución para todos aquellos programadores que quieran implementar las impresoras fiscales desde sus aplicaciones web o por medio a una red.NOTA: En proceso de homologación y por el momento solo funciona com impresoras EPSON.
Presentación de la clase sobre el protocolo HTTP de la asignatura Servidores Web del Máster Universitario en Desarrollo de Aplicaciones y Servicios Web.
Los servicios web son una herramienta fantástica para los desarrolladores de páginas web. Tenemos a nuestra disposición una ingente cantidad de información incorporada a nuestras páginas actualizada y en tiempo real.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...espinozaernesto427
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta intensidad son un tipo de lámpara eléctrica de descarga de gas que produce luz por medio de un arco eléctrico entre electrodos de tungsteno alojados dentro de un tubo de alúmina o cuarzo moldeado translúcido o transparente.
lámparas más eficientes del mercado, debido a su menor consumo y por la cantidad de luz que emiten. Adquieren una vida útil de hasta 50.000 horas y no generan calor alguna. Si quieres cambiar la iluminación de tu hogar para hacerla mucho más eficiente, ¡esta es tu mejor opción!
Las nuevas lámparas de descarga de alta intensidad producen más luz visible por unidad de energía eléctrica consumida que las lámparas fluorescentes e incandescentes, ya que una mayor proporción de su radiación es luz visible, en contraste con la infrarroja. Sin embargo, la salida de lúmenes de la iluminación HID puede deteriorarse hasta en un 70% durante 10,000 horas de funcionamiento.
Muchos vehículos modernos usan bombillas HID para los principales sistemas de iluminación, aunque algunas aplicaciones ahora están pasando de bombillas HID a tecnología LED y láser.1 Modelos de lámparas van desde las típicas lámparas de 35 a 100 W de los autos, a las de más de 15 kW que se utilizan en los proyectores de cines IMAX.
Esta tecnología HID no es nueva y fue demostrada por primera vez por Francis Hauksbee en 1705. Lámpara de Nernst.
Lámpara incandescente.
Lámpara de descarga. Lámpara fluorescente. Lámpara fluorescente compacta. Lámpara de haluro metálico. Lámpara de vapor de sodio. Lámpara de vapor de mercurio. Lámpara de neón. Lámpara de deuterio. Lámpara xenón.
Lámpara LED.
Lámpara de plasma.
Flash (fotografía) Las lámparas de descarga de alta intensidad (HID) son un tipo de lámparas de descarga de gas muy utilizadas en la industria de la iluminación. Estas lámparas producen luz creando un arco eléctrico entre dos electrodos a través de un gas ionizado. Las lámparas HID son conocidas por su gran eficacia a la hora de convertir la electricidad en luz y por su larga vida útil.
A diferencia de las luces fluorescentes, que necesitan un recubrimiento de fósforo para emitir luz visible, las lámparas HID no necesitan ningún recubrimiento en el interior de sus tubos. El propio arco eléctrico emite luz visible. Sin embargo, algunas lámparas de halogenuros metálicos y muchas lámparas de vapor de mercurio tienen un recubrimiento de fósforo en el interior de la bombilla para mejorar el espectro luminoso y reproducción cromática. Las lámparas HID están disponibles en varias potencias, que van desde los 25 vatios de las lámparas de halogenuros metálicos autobalastradas y los 35 vatios de las lámparas de vapor de sodio de alta intensidad hasta los 1.000 vatios de las lámparas de vapor de mercurio y vapor de sodio de alta intensidad, e incluso hasta los 1.500 vatios de las lámparas de halogenuros metálicos.
Las lámparas HID requieren un equipo de control especial llamado balasto para funcionar
3. REST
Representational State Transfer
● Orientado a recursos
● Uso del protocolo HTTP (cliente-servidor)
● Separation of Concerns
● Stateless
● Mecanismos de caché
● Interfaz uniforme
7. 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!" }
8. 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"}}
]
}
10. 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"}}
]
}
11. 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
12. 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"}
]
}
14. 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" }
15. 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"}
]
}
16. 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é."
}
}
17. Recursos
¿Y si queremos devolver una mensaje de error?
{
"error": {
"name": "account.from.invalid",
"message": "La cuenta de origen no es válida"
}
}
18. Verbos HTTP
Los verbos https deben ser:
● Seguros
● Idempotentes
Verbo Seguro Idempotente
GET Sí Sí
POST No No
PUT No Sí
DELETE No Sí
19. Verbos HTTP
SH
Bank
GET /accounts HTTP/1.1
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
]
}
20. 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" }
21. Verbos HTTP
SH
Bank
GET /accounts HTTP/1.1
HTTP/1.1 200 OK
{ "accounts": [
{"id": "cuentaA", "balance": "25M"},
{"id": "cuentaB", "balance": "13.5K"}
]
}
22. 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
23. 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"}
]}
24. 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)
25. 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.