Saludos. Así que bienvenidos a este curso.
Aqui, os mostraré estos dos aspectos, aunque no en profundidad,
de todas maneras los realizará
con los ejercicios de Tiny blog.
La questión és, que podemos hacer una vez que disponemos
de datos que hemos descrito para realizar desarrollo Web?
I como realiza REST Seaside, que es uno de los
frameworks para realizar REST con Pharo.
Verá, es relativemente elegante.
Así que empezemos con el primer sujeto.
Magritte es un framework que parte de la hipotesis de decir
que si usted describe sus datos, entonces, a partir de aqui,
podra hacer cosa que estaran basadas en estos datos.
Podra generar por ejemplo formularios,
interfaces graficas. I esto és lo que le mostraré.
Aqui en particular, en el curso, le mostraré
como podemos generar componentes
Seaside, que le permitiran de construir
aplicaciones Web más rapidamente.
Ok si vemos, por ejemplo, que tenemos una clase, la clase Address.
Esto són direcciones en Suiza.
Que és una dirección?
És una calle, un lugar, un codigo postal y un
canton por ejemplo.
Tengo una instancia que describe una calle en particular, así
que nada del otro mundo.
Solo de la programación, estandard.
Ahora lo que Magritte realizará, Magritte describirá los campos
de esta clase de la manera siguiente.
Tendremos una cadena de descripciones que nos dirá:
esto, és el nombre de la calle.
Pues, lo que és mas interesante és la descripcion del codigo postal.
Un codigo postal Suizo, en primer lugar decimos que
una dirección no és valida si el codigo postal no esta especificado.
Si no especifico el codigo postal dire que la direccion no és valida
I en Suiza los codigos postales
estan entre 1.000 y 9.999.
Aqui, lo describiremos en la descripción y podremos
tener en cuenta esta información para realizar
la validación automatica de formularios.
Luego para el lugar diremos que és un campo requerido y
más tarde que se trata de una plaza. Otra cosa és que por ejemplo
Suiza, tiene 26 cantones, lo que diremos és que
el canton ésta enumerado, és por eso que elegimos una
single option description, y és un campo requerido, queremos que
sea a elegir y que las opciones sean listadas.
Así que facilitaremos la lista, que enumera todos los cantones
Suizos, no podrá haber otro.
Una vez hayamos hecho esto que podremos hacer con Magritte?
¿Tanbién como lo describimos en Pharo?
Lo haremos de esta manera, diremos: tengo una descripcion Street.
la descripcion Street, és una stream description (flujo).
Tiene esta etiqueta, esta prioridad.
Por los nombres, dire: que és una descripción de nombres.
Tendre otra prioridad, una etiqueta.
Voy a decir que és requerida y luego facilitare mis valores finales.
Ahora que puedo hacer con esto?
La primera de las cosas que puedo realizar, no entraré en
el detalle del codigo, pero lo que puedo realizar,
puedo escribir un pequeño programa que és en realidad
un interprete, que me generara reportes.
Esto quire decir que aqui, con una dirección, tomo
una dirección, tengo este pequeño programa que me permitirá
por ejemple un pequeño reporte: la calle se llama
Schutzenmattstrasse. La población
será Berna, el canton es Berna y el codigo postal 2012.
Así que podre utilizar el he hecho de que mis datos
están descritos para poder generar reportes.
Esto és lo menos que podemos hacer.
Así que lo que haremos ahora con Seaside,
crearemos un componente visual Web.
Aqui, digo: tu eres un objeto dirección, te quiero ver
como un componente.
Así que esto generará esta parte.
Incorporaré una forma para realizar la validación,
lo que me incorporara, Save y Cancel.
Y realizaré una llamada así que la mostraré en la pantalla.
Así que aqui lo que podeis ver
és que no he manipulado, no he utilizado ni tan siquiera el DSL de Seaside para
describir mis componentes Web, que se generan automaticamente.
Y esto és supe.
Me gustaria enseñaros, por ejemplo, que la sociedad
Cuve, qui és una sociedad que se ocupa de la gestion de carteras en US,
todo lo que veis en la pantalla se ha realizado con
Seaside y con Magritte. Todos los reportes se generan
automaticamente. Y esto, és realmente una ganancia de productividad muy seria.
Así que la idea de este curso, és de facilitarle la
intuicion de que podemos hacer cuando tenemos los
datos que estan descritos y en particular para
la generación de componentes Web.
Así que los realizará en Tiny blog.
Ahora lo que le mostraré és que Seaside
tiene tambien una capa REST, para poder comunicar
cliente/servidor sin tener que pasar por componentes
visuales, así que la integración de REST en Seaside es realmente elegante.
De hecho anotaremos objetos de nuestro dominio y
tendremos una conversión entre los parametros de URL y los
metodos de Pharo Smalltalk.
¿Pues como lo realizamos?
Para que se haga una idea de la complejidad, de hecho lo que
hacemos és que definiremos lo que llamamos un filtro,
aqui defino Tiny blog REST fulFilter que és una subclase de
WARestfulfilter, sin importancia.
Y la cosa interesante és que incorporaré un filtro
cuando creo mi aplicacion aqui abajo.
Esto de todas maneras lo vera en el ejercicio.
Y ahora, imaginemos que, por ejemplo, quiero disponer
de la lista de todos los blogs del servidor Tiny blog.
Como expresaré esto?
Lo voy a expresar de la manera siguiente.
Definiré un metodo en la clase Restfulfilter,
que se llamará listAll, que de hecho se corresponde al lapiz
que utilizaré.
Y le digo: tu tienes un acceso para el protocolo rest
y me generaras un texto en el formato Json.
Aqui, escribiré lo que voy ha hacer.
Aqui, le pido: de crearme un stream (flujo) Pharo.
En este stream tomaré todos los blogs que estan
disponibles, tomaré cada uno de los bloques, puede ver
un iterador más. Tomaré cada uno de los blogs
y luego lo convertiré en Javascript y
los separaré con comas.
Así que obtengo lo que queria.
Ahora me gustaria hacer una cosa un poco más avancada.
Imaginemos que quiero encontrar un blog.
Quiero que me facilite el blog que se corresponde a un titulo.
Aqui utilizaré, por ejemplo, el post y luego
dire: quiero este blog post facilitando el titulo al lado.
Como lo haré?
Definiré un metodo post que toma un titulo con parametros,
y incorporo la nocion de camino.
Así que diré: cuidado, cuando en la URL tenga
http y alguna cosa post con otra cosa aqui,
esta otra cosa sera el titulo y és lo que vemos aqui
entre parentesis.
Y aqui, de la misma manera, digo, cuidado voy a
producir este texto en formato Json.
Así que puede ver, aqui, lo que hago és que llamo a las
funcionalidades de Tiny blog.
Pregunto: tienes un post con un titula que está
definido con parametros?
Si. Si está vacio, muestro un error sino lo que hago,
és incorporarlo a mi stream y entrego mi stream.
Hay más cosas, que le mostraré rapidamente.
Si quiero hacer una busqueda sera igual.
Si en mi URL,
tecleo "search title" y entrego un valor,
automaticamente sera encontrado, igual con mi titulo.
Así que tendre mi titulo aquí.
voilà, la manera de realizar REST en Seaside.
Esto quiere decir que con Seaside puede tener
componentes graficos, y tanbien tiene la
la posibilidad de exponer las funcionalidades de su
dominio a traves de una API REST.
Solamente le he mostrado get pero de hecho usted dispone
de una API, con todas las funcionalidades REST
disponibles, comme delete, post, get y las demas.
Tanbien le he mostrado que Seaside,
junto a Magritte, le permite de construir
formularios muy potentes y de forma rapida y
que estan muy bien integrados.
Tanbien, dispone de otra solucion para hacer REST.
La gente utiliza a menudo Teapot, que és una sobrecapa
de Zinc para hacer REST, par construir prototipos de manera
rapida, para comprobar si su API REST funciona.
Con el, usted tanbien puede divertirse, es un pequeño
paquete que dispone de documentación en el libro Pharo Web Enterprise.