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.
Guia Basica para bachillerato de Circuitos Basicos
Servicios Web con Python + web.py (Homenaje a Aaron Swartz)
1. SERVICIOS WEB CON PYTHON
+ WEB.PY
HOMENAJE A AARON SWARTZ
Nacho Álvarez
@neonigmacdb
2. 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
3. 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?
4. SYSMANA 2018 I.E.S. GRAN CAPITÁN
▸ Involucrado en la Innovación de soluciones de medios de
pago
WHOAMI?
5. 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?
7. 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
8. 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
9. 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
11. 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
12. 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
13. 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
15. 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
16. 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
17. SYSMANA 2018 I.E.S. GRAN CAPITÁN
▸ Ejemplos:
ENTENDAMOS LOS WEBSERVICES - REST
18. 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
21. SYSMANA 2018 I.E.S. GRAN CAPITÁN
http://webpy.org/philosophy
LA PROPUESTA DE WEB.PY
22. 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
23. 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":"Nachon"}' http://localhost:8080/hello/
24. 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>
28. 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”