Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Servicios Web con Python + web.py (Homenaje a A...

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.

Nacho Álvarez

January 29, 2018
Tweet

More Decks by Nacho Álvarez

Other Decks in Technology

Transcript

  1. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ $ whoami ▸ Gracias,

    Aaron ▸ Entendamos los WebServices ▸ SOAP vs REST ▸ La propuesta de web.py ▸ Templetor: el sistema de plantillas ▸ Demo time! ÍNDICE
  2. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ Ingeniero en Informática por

    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?
  3. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ ALGUNOS DATOS 10/16 –

    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?
  4. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ Con 3 años empezó

    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
  5. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ En cuanto a hacktivismo,

    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
  6. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ The Internet’s Own Boy

    (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
  7. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ W3C define a los

    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
  8. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸RPC, Llamadas a Procedimientos Remotos):

    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
  9. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸REST (REpresentation State Transfer). Los

    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
  10. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸HTTP posee un interfaz uniforme

    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
  11. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸Separación entre el cliente y

    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
  12. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ Ejemplos: ENTENDAMOS LOS WEBSERVICES

    - 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
  13. SYSMANA 2018 I.E.S. GRAN CAPITÁN import web urls = (

    '/', 'Index' ) class Index: def GET(self): return "Hola, mundo!" if __name__ == "__main__": app = web.application(urls, globals()) app.run() LA PROPUESTA DE WEB.PY
  14. SYSMANA 2018 I.E.S. GRAN CAPITÁN import web import json urls

    = ('/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/
  15. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ Simple y eficiente; en

    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>
  16. SYSMANA 2018 I.E.S. GRAN CAPITÁN DESPLIEGUE DE APLICACIONES sudo apt-get

    install libapache2-mod-wsgi WSGIScriptAlias /appname /var/www/webpy-app/code.py/ AddType text/html .py
 
 Alias /appname/static /var/www/webpy-app/static/ sudo a2ensite my-website application = web.application(urls, globals()).wsgifunc() mod-wsgi Apache a2ensite web.py
  17. SYSMANA 2018 I.E.S. GRAN CAPITÁN ▸ https://hipertextual.com/2015/09/aaron-swartz- perseguido ▸ http://users.dsic.upv.es/~rnavarro/NewWeb/docs/

    RestVsWebServices.pdf ▸ http://recursospython.com/guias-y-manuales/templetor- standalone/ ▸ http://webpy.org WEBGRAFÍA
  18. SYSMANA 2018 I.E.S. GRAN CAPITÁN ¿PREGUNTAS? “Si somos suficientes, alrededor

    del mundo, no sólo enviaremos un fuerte mensaje de oposición a la privatización del conocimiento - haremos de ello una cosa del pasado”