Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
Se repasará la descripción de servicios Web y tecnologías SOAP/REST. A continuación, se presenta el microframework web.py desarrollado por Aaron Swartz para la generación y despliegue de servicios Web.
la UCO ▸ Certificado Scrum Manager en 2012 y PMP en 2017 ▸ Trayectoria profesional: ▸ Soporte Servicio Informática UCO ▸ Desarrollo Web ▸ Desarrollo / Integración distribuciones GNU/Linux ▸ Android mobile + backend developer (WUL4) ▸ Técnico especialista Área de Innovación (Redsys) ▸ Analista Técnico en Soluciones Sectoriales (Redsys) WHOAMI?
12/17… (algo más de 1 año de proyecto) ▸ > 1.000.000 usuarios ▸ > 3.000.000 transacciones ▸ > 58€ de importe medio ▸ > 180 millones de euros en movimiento ▸ 96% cuota de mercado en España WHOAMI?
a leer, con menos de 10 a programar ▸ Creó una especie de Wikipedia (The Info). Le animaron a desistir porque la gente no confiaba en compartir enciclopedias ▸ Diseñó una plataforma parecida a Change.org ▸ Fue coautor de las especificaciones RSS ▸ También coautor del lenguaje Markdown ▸ Y también participó en el nacimiento de Creative Commons ▸ Fusionó infogami (de Y Combinator) con un pequeño sitio llamado reddit GRACIAS, AARON
Aaron fue cofundador de Demand Progress junto a David Segal ▸ La organización consiguió bloquear los ataques a la neutralidad de la red en forma de dos leyes que se demostraron poco apropiadas: ▸ SOPA: permitiría cerrar sitios Web con una única infracción, parecida a la actual ley Sinde ▸ PIPA: tan terriblemente redactada que podría haber supuesto el apagón de YouTube ▸ http://www.aaronsw.com/ GRACIAS, AARON
(El chico de Internet) ▸ Cuando era adolescente, Aaron Swartz era un prodigio de la programación informática con una sed insaciable de conocimiento. Después de emerger como un pionero del activismo en Internet, la educación y la política, fue acusado de varios cargos federales en 2011 y 2012, lo que desencadenó una compleja cadena de acontecimientos que dejaron a las oscilaciones de la comunidad de Internet. Poco después, a la edad de 26, Swartz fue encontrado muerto de un aparente suicidio en su apartamento de Brooklyn. (FILMAFFINITY) ▸ https://www.youtube.com/watch?v=7jhdj0vKbYo GRACIAS, AARON
WebServices como APIs Web que pueden ser accedidas dentro de una red (como Internet) y son ejecutados en el sistema que los aloja ▸ Estos servicios proporcionan mecanismos de comunicación estándares entre diferentes aplicaciones, que interactúan entre sí para presentar información dinámica al usuario. ▸ http://users.dsic.upv.es/~rnavarro/NewWeb/docs/ RestVsWebServices.pdf ENTENDAMOS LOS WEBSERVICES
Presentan una interfaz de llamada a procedimientos y funciones distribuidas. La unidad básica de este tipo de servicios es la operación WSDL (descriptor del Servicio Web). Mala elección porque suele ser implementado por medio del mapeo de servicios directamente a funciones específicas del lenguaje o llamadas a métodos. ▸Arquitectura Orientada a Servicios (Service-oriented Architecture, SOA). Aquí la unidad básica de comunicación es el mensaje, más que la operación. Al contrario que los Servicios Web basados en RPC, este estilo es débilmente acoplado, lo cual es preferible ya que se centra en el “contrato” proporcionado por el documento WSDL, más que en los detalles de implementación. ENTENDAMOS LOS WEBSERVICES
Servicios Web basados en REST intentan emular al protocolo HTTP o protocolos similares mediante la restricción de establecer la interfaz a un conjunto conocido de operaciones estándar (por ejemplo GET, PUT,…). Este estilo se centra más en interactuar con recursos con estado, que con mensajes y operaciones. ▸GraphQL es un protocolo agnóstico y no depende en nada de HTTP. No usa métodos o respuestas HTTP. El lenguaje y sintaxis usado en la request es el mismo que el de la respuesta. Dispone de un sistema de tipado fuerte por el que cualquier mal uso puede ser rápidamente detectado en tiempo de desarrollo. Otro de sus principales rasgos es que la API puede ser single endpoint. ENTENDAMOS LOS WEBSERVICES
para acceso a los recursos, el cual consiste de URIs, métodos, códigos de estado, cabeceras y un contenido guiado por tipos MIME. ▸Los métodos HTTP más importantes son PUT, GET, POST y DELETE. Suelen ser comparados con las operaciones asociadas a la tecnología de base de datos (operaciones CRUD). ▸Cuando utilizamos REST, HTTP no tiene estado. Cada mensaje contiene toda la información necesaria para comprender la petición. ENTENDAMOS LOS WEBSERVICES - REST
el servidor: el protocolo REST separa totalmente la interfaz de usuario del servidor y el almacenamiento de datos. ▸Visibilidad, fiabilidad y escalabilidad. Cualquier equipo de desarrollo puede escalar el producto sin excesivos problemas, migrar a otros servidores o realizar todo tipo de cambios en la base de datos ▸La API REST siempre es independiente del tipo de plataformas o lenguajes: lo único indispensable es que las respuestas a las peticiones se hagan siempre en el lenguaje de intercambio de información usado, normalmente XML o JSON. ENTENDAMOS LOS WEBSERVICES - REST
- REST https://developers.google.com/custom-search/json-api/v1/using_rest GET https://www.googleapis.com/customsearch/v1?key=INSERT_YOUR_API_KEY&cx=017576662512468239146:omuauf_lfve&q=lectures
= ('/hello/', 'Index') class Index: def POST(self): data = json.loads(web.data()) value = data["name"] return "Hello " + value if __name__ == "__main__": app = web.application(urls, globals()) app.run() LA PROPUESTA DE WEB.PY curl -H "Content-Type: application/json" -X POST -d '{"name":"Nacho\n"}' http://localhost:8080/hello/
lugar de crear una nueva sintaxis para los templates utiliza la misma de Python TEMPLETOR: EL SISTEMA DE PLANTILLAS BACKEND FRONTEND render = web.template.render('templates') return render.hello('Mi título', 'Mi autor', '01/01/2018') $def with (title, author, date) <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head><title>$title</title></head> <body> <h1>$title</h1> <small>$author</small> <p>$date</p> </body> </html>