Вы находитесь на странице: 1из 59

Curso de REST ASO V1.

10/11/2017 GFT MÉXICO 1


Esquema Canónico
Un modelo canónico es un modelo de entidades que dan sentido al
negocio, que son reutilizables entre servicios de negocio y además
está siempre acotado.

Tener un MCD facilita el “gobernance” de las estructuras de datos y


promueve la estandarización.

10/11/2017 GFT MÉXICO 2


Abstracción

Se trata de "modelar" los elementos del mundo real

Las características de cada elemento/entidad son las que lo hacen


distintivo de otras entidades.

Imaginemos que queremos aplicar abstracción a los autos. ¿Qué


características podemos abstraer de los automóviles? o ¿Qué
características semejantes tienen todos los automóviles?.

10/11/2017 GFT MÉXICO 3


Diseño UML

UML son las siglas de “Unified Modeling Language”.


Es un estándar que se ha adoptado a nivel
internacional por numerosos organismos y
empresas para crear esquemas, diagramas y
documentación relativa a los desarrollos de
software.

10/11/2017 GFT MÉXICO 4


Diagrama UML

Un diagrama de uml es la representación


para visualizar el diseño y las relaciones que
se tienen entre los módulos, entidades, etc
que se involucran el sistema o el servicio
determinado.

10/11/2017 GFT MÉXICO 5


Relaciones

- Asociación
- Dependencia:
- Agregación:
- Composición:
- Herencia (Generalización/especialización):
- Realización:

10/11/2017 GFT MÉXICO 6


Asociación

Se representa con una flecha continua, es una


relación de estructura entre entidades, es decir, una
entidad se construye a partir de otra u otras. Aunque
este tipo de relación es más fuerte que
la Dependencia es más débil que la Agregación, ya
que el tiempo de vida de un objeto no depende de
otro.
10/11/2017 GFT MÉXICO 7
Ejemplo

Tenemos una clase Taxi, el cual contiene matrícula, chofer. El chofer


debe de contar con un nombre.
Cada Taxi necesita ser conducido por un Chofer.
Taxi necesita acceder a algunos de sus comportamientos de
su Chofer (por ejemplo, su nombre).

10/11/2017 GFT MÉXICO 8


Dependencia
Se representa con una flecha discontinua que parte
desde una entidad y apunta a otra con líneas
puntuadas. El sentido de la flecha nos indica quien usa a
quien. Es una relación de uso entre dos entidades (una
usa a la otra). Esta relación es la más básica entre
entidades y comparada con los demás tipos de relación,
la más débil.
10/11/2017 GFT MÉXICO 9
Ejemplo

Tenemos una entidad Impresora, la cual se encarga


de imprimir los Documentos.

10/11/2017 GFT MÉXICO 10


Agregación

Se representa con una flecha continua y un rombo


sin relleno. Es una relación que es utilizada cuando
una entidad se compone de otras entidades,
aunque si quitamos alguna de ellas entonces la
primera seguirá funcionando normalmente; es un
agregado puede ir o no.
10/11/2017 GFT MÉXICO 11
Ejemplo

Una escuela tiene cafetería y biblioteca, aunque si


destruimos alguna de ellas entonces sigue siendo
escuela.

10/11/2017 GFT MÉXICO 12


Composición
Se representa con una flecha continua y un
rombo relleno. Es una relación muy similar a
la anterior, solo que con la diferencia de que
si falta una entidad de la que se compone la
principal, esta se verá afectada; todas las
entidades forman un todo.
10/11/2017 GFT MÉXICO 13
Ejemplo

Una escuela se compone de aulas. Si no tuviera


aulas entonces ¿qué sería?

10/11/2017 GFT MÉXICO 14


Herencia
(Generalización/especialización)

Se representa con una flecha continua de la


entidad de la que hereda. Indica que una entidad
hereda los comportamientos y características
especificados por otra entidad(base o padre), por
lo cual podrá acceder a sus comportamientos y
características.
10/11/2017 GFT MÉXICO 15
Ejemplo

Se especifica que las entidades Alumno y Profesor heredan de la entidad


Persona, es decir, Alumno y Profesor podrán acceder a los comportamientos
y características de Persona. Y cada entidad tiene su propia estructura.

10/11/2017 GFT MÉXICO 16


Realización
Se representa con una flecha punteada de la entidad que
se va implementar. La implementación de un interfaz
(contrato) se refiere al proceso de definir el (los)
comportamiento (s) declarado (s) por la interfaz. Además
la entidad que herede cree su propia estructura o
propiedades que la definan como única o diferente.

10/11/2017 GFT MÉXICO 17


Ejemplo
En el ejemplo un coche puede girar y puede pitar. Así, una
entidad Coche puede implementar simultáneamente el
interfaz IVolante y el interfaz IPito, ya que debe de seguir
estas reglas pero cada coche lo hace de distinta manera.

10/11/2017 GFT MÉXICO 18


Ejercicio

Realizar la abstracción de una jerarquía de Automóviles de por lo menos:

- Una Interfaz
- Una entidad base
- Tres entidades concretas

10/11/2017 GFT MÉXICO 19


¿Qué es SOAP?

SOAP (Protocolo Simple de Acceso a Objetos). Se trata de un protocolo basado en


XML, que permite la interacción entre varios dispositivos para poder transmitir
información.
Está basado en XML, esto facilita la lectura, pero también los mensajes resultan
más largos y, por lo tanto, considerablemente más lentos de transferir.

10/11/2017 GFT MÉXICO 20


Servicio Web

Un conjunto de protocolos y estándares con capacidad para interoperar


(dos o más sistemas que intercambian información) a través de la Web.
Estas aplicaciones o tecnologías intercambian datos entre sí con el
objetivo de ofrecer funciones.
Los proveedores o pública de forma remota ofrecen sus servicios y los
usuarios solicitan un servicio llamando a estos a través de la Web.

10/11/2017 GFT MÉXICO 21


¿Para qué sirven?

Estos servicios proporcionan mecanismos de comunicación


estandarizados entre diferentes aplicaciones, que interactúan
entre sí para presentar información dinámica al usuario, para
proporcionar interoperabilidad (comunicarse sin importar la
implementación) y extensibilidad (agregar más funcionalidades)
entre estas aplicaciones, y que al mismo tiempo sea posible su
combinación para realizar operaciones.

10/11/2017 GFT MÉXICO 22


¿Cómo funcionan?

10/11/2017 GFT MÉXICO 23


¿Qué es XML?

XML es un formato universal para datos y documentos estructurados muy


simple. Los archivos XML tienen una extensión de archivo de xml. Al igual
que HTML, XML utiliza etiquetas (palabras delimitadas por los caracteres >
y <) para estructurar los datos del documento.

Su función principal es para el intercambio de una gran variedad de datos


en la web.

10/11/2017 GFT MÉXICO 24


Ejemplo

<?xml version="1.0" >


<album>
<autor> nombre=Enrique apellidos=Bunbury edad= 50</autor>
<titulo>Y al final</titulo>
<formato>MP3</formato>
<duración>3 minutos</duración>
</album>

10/11/2017 GFT MÉXICO 25


REST - Conceptos básicos

10/11/2017 GFT MÉXICO 26


REST Conceptos básicos

El acrónimo REST responde a “REpresentational State Transfer”. El


estilo arquitectónico REST fue descrito por primera vez por Roy
Thomas Fielding, allá por el año 2000.

REST no es una tecnología, ni siquiera una arquitectura, REST es un


estilo arquitectónico. Es un conjunto de restricciones a respetar,
para diseñar servicios web escalables.
10/11/2017 GFT MÉXICO 27
¿Cuáles son los principios?

- Es orientado a recursos.
- Cada recurso posee un identificador único (UUID o GUID).
- Comunicación stateless (sin estado).
- Utiliza como base el protocolo HTTP para la comunicación.
- El recurso tiene más de una manera de representación.
- La implementación y la representación interna de un recurso
debe de ser privada y no accesibe al exterior.

10/11/2017 GFT MÉXICO 28


¿Por qué usar REST?

- Utiliza los métodos HTTP de manera explícita


- Lo que se publica son recursos y múltiples representaciones
- No mantiene estado
- Es visible y simple, es decir autodescriptivo
- Fiabildad, es decir al basarse en los método de http, se tiene la finalidad que
sean seguros e idempotentes en su mayoría
- Expone URIs con forma de directorios

10/11/2017 GFT MÉXICO 29


Implementaciones REST

Hay 3 formas conocidas hasta el momento:


1- RESTful: El mas reestrictivo
2- RESTless: Medio reestrictivo
3- RESTlike: Casi nada reestrictivo.

10/11/2017 GFT MÉXICO 30


RESTful

- Son WS basados en REST.


- Más estricto, es decir al enviar el recurso A se debe devolver el
mismo recurso o no contradecir el significado natural de respuesta
- Los servicios representan entidades de negocio y no acciones.
- Sistema de capas jerárquica
- Uso de uri param para identificar el recurso que se desea operar
- Es el más usado y más natural

10/11/2017 GFT MÉXICO 31


Ejercicio
¿Cual de estas URL's son un diseño adecuado en RESTful y
cuáles no? ¿Explica la razón?

• /books/{id}/chapters/{id}
• /books/chapters/
• /books/{id}/authors
• /books/{id}/libraries/{libraryId}
• /books/{id}/loan/
• /books/destroy
• /books/V01/notificationServices

10/11/2017 GFT MÉXICO 32


Ejercicio

¿Cuál es la correspondencia entre las operaciones básicas


CRUD con los verbos HTTP? Plantea un ejemplo CRUD base
sobre la entidad Celular.

10/11/2017 GFT MÉXICO 33


RESTless

- Son WS basados en REST.


- Todo es una acción (comprar, validar, etc).
- Usa por lo general el método POST de HTTP.
- Es un poco más libre, por ejemplo se puede mandar un recurso A y
devolver un recurso B.
- Los servicios representan recursos envoltorias
- Un recurso que está asociado a la acción, difícilmente es
reutilizado.

10/11/2017 GFT MÉXICO 34


Emboltorios o Wrappers

Es una entidad que se utiliza para poder encerrar atributos simples o complejos, esta NO
representa una entidad de negocio, es decir está hecha a la media.

¿Qué ocurre con las acciones que no corresponden a las operaciones CRUD?
Aquí es donde las cosas pueden confundirse. Hay un número de enfoques:
- Reestructurar la acción para que aparezca como un campo de un recurso. Esto
funciona si la acción no toma parámetros. Por ejemplo, un acción “activate” puede ser
asignada a un campo booleano activated y actualizado vía PATCH al recurso.

- Tratarlo como un sub-recurso (fake). Por ejemplo, /persons/mark


10/11/2017 GFT MÉXICO 35
Emboltorios o Wrappers

- A veces realmente no hay forma de mapear la acción a una estructura REST apropiada.
Por ejemplo, una búsqueda multi-recurso no tiene sentido ser asignada a un endpoint
de un recurso específico.

- En este caso, /search podría tener más sentido incluso si no es un sustantivo. Esto está
BIEN – sólo habrá que tener en cuenta en realizar lo que sea correcto desde la
perspectiva del consumidor del servicio y asegurarnos de que esté claramente
documentado para evitar confusiones.

Ejemplos:
/api/utils/sendMail/
/api/persons/validateIdentity
10/11/2017 GFT MÉXICO 36
Emboltorios o Wrappers

Ejercicio: Considerar el caso de la creación de una entidad Customer que tiene la siguiente
característica:
- Como parámetro de entrada se requiere forzosamente recibir el id del usuario operante
de la terminal.

¿Conviene hacer un Wrapper que contenga a la entidad Customer + el parámetro extra?


¿Pero si hacemos un Wrapper entonces la URI debe cambiar?
¿Conviene agregar el parámetro extra a la entidad Customer?
¿Conviene enviar el parámetro extra en los encabezados de la petición HTTP?

10/11/2017 GFT MÉXICO 37


RESTless

Validar que los teléfonos de un cliente se encuentren en lista negra,


diseñar la URI

10/11/2017 GFT MÉXICO 38


RESTlike

- Son WS basados en REST.


- Son mucho más ligeros
- Servicios con muy baja latencia
- Usualmente es utilizado para dispositivos móviles
- Es el de mayor libertad:
* Se pueden usar uri param con acción.
* Se pueden usar un campo en en cuerpo que indique la acción a
realizar.
* La acción puede ser el query param.
* Usar un formato único muy ligero para el intercambio de datos.
* Se suele usar siempre el verbo POST para todo.
10/11/2017 GFT MÉXICO 39
RESTlike

Ejemplos:
/reserva/123/completar
/reserva/123?action=completar
/books/?start=1&end=2
/books/chapters

10/11/2017 GFT MÉXICO 40


Protocolo HTTP, sus verbos y encabezados.

10/11/2017 GFT MÉXICO 41


¿Qué es el Protocolo HTTP?

Hypertext Transfer Protocol o HTTP (protocolo de transferencia de


hipertexto). Es el protocolo de comunicación que permite las
transferencias de información entre cliente-servidor en la web.
HTTP se basa en sencillas operaciones de solicitud/respuesta. Un
cliente establece una conexión con un servidor y envía un mensaje
con los datos de la solicitud. El servidor responde con un mensaje
similar, que contiene el estado de la operación y su posible
resultado.
10/11/2017 GFT MÉXICO 42
¿Cuales son los verbos que utiliza HTTP y para qué
sirven?

- POST: Crea un recurso


- GET: Consulta un recurso, ya sea un detalle o listado.
- PUT: Actualiza un recurso completo, ya sean todos o uno solo.
- PATCH: Actualiza un recurso parcialmente, ya sean todos o uno solo.
- DELETE: Elimina un recurso, ya sean todos o uno solo.
- OPTIONS: Devuelve los verbos u operaciones que soporta un servicio
web.
- HEAD: Devuelve solo los datos que van en los encabezados.

10/11/2017 GFT MÉXICO 43


¿Cuales son los encabezados, cabeceras o
headers de HTTP y para qué sirven?

Las Cabeceras HTTP son los parámetros que se envían en una


petición o respuesta al cliente o al servidor para proporcionar
información esencial sobre la transacción en curso.

Estas cabeceras proporcionan información mediante la


sintaxis 'Cabecera: Valor' y son enviadas automáticamente
por el navegador o el servidor Web.

10/11/2017 GFT MÉXICO 44


Ejemplo de cabeceras o headers de HTTP.

GET http://localhost:3000/videojuegos HTTP/1.1


Host: localhost:3000
content-type: application/json; charset=utf-8
Accept: application/json
Accept-Language: es
Date: Tue, 15 Feb 2017 08:12:31 GMT
10/11/2017 GFT MÉXICO 45
¿Qué es un JSON?

JSON (JavaScript Object Notation) es un formato para el


intercambios de datos, que describe los la sintaxis dedicada
que se usa para identificar y gestionar los mismos (llave –
valor).
Una de las mayores ventajas que tiene el uso de JSON es que
puede ser leído por cualquier lenguaje de programación. Por
lo tanto, puede ser usado para el intercambio de información
entre distintas tecnologías.
10/11/2017 GFT MÉXICO 46
Tipos de datos en JSON

Array: Es una lista de valores.


Boolean: true o false.
Number: Número ya sea entero o decimal.
Object: Es una estructura definida de n-campos.
String: Secuencia de caracteres.

10/11/2017 GFT MÉXICO 47


Ejemplo

{
"title": "Galaxy S8",
"description": "Un diseño que revoluciona todo lo que existe hasta ahora. Su
pantalla es más grande y brinda una vista envolvente. No lo pienses más y
llévate el Samsung Galaxy S8 en Plan Telcel o Amigo Kit a buen precio.",
"url": "/personas/equipos/telefonos-y-smartphones/samsung/sm-
g950f.html"
}

10/11/2017 GFT MÉXICO 48


Recursos y subrecursos.

Un recurso es una entidad que representa un concepto de


negocio que puede ser accedido públicamente. Un ejemplo de
recurso sería simplemente “Card”.
Por otro lado un subrecurso es un recurso hijo, que permite
operar de forma estándar para realizar las operaciones CRUD
sobre el hijo de forma simple y directa.

10/11/2017 GFT MÉXICO 49


Uri Param y query
param.

Uri Param: es un parámetro en la URI, que se representa


semánticamente el identificador natural del recurso actual. Su función
es identificar cual es el recurso al que se le quiere realizar la operación.
Query param o Query string: es un parámetro adicional en la URI, que
se representa por una sería de pares [clave, valor] separados por un &
y que se sitúan en la URI tras el símbolo “?”. Dentro de cada par la
clave y el valor se separan mediante “=”. Su función es realizar una
búsqueda o filtrado dentro de una colección.
10/11/2017 GFT MÉXICO 50
¿Qué es el Modelo de Madurez de Richardson y para qué sirve?

Es un modelo propuesto por Leonardo Richardson que ayuda a


entender mejor el concepto REST y a tratar de implementarlo de la
mejor forma.
Esto sirve para poder identificar en qué nivel de maduración se
encuentran los servicios rest que se realizan y por otro lado tener en
cuenta las características de cada nivel para mejorar el diseño y la
implementación de los mismo; sin perder de vista perder de vista que
las características a cumplir con REST.
10/11/2017 GFT MÉXICO 51
Nivel 0

Los servicios que están en este nivel utiliza HTTP como


un protocolo de transporte como un túnel, un simple método
POST a única URL. SOAP es un buen ejemplo de esto porque
se utiliza un único endpoint para todas las operaciones.

http://myserver.com/contexto/recurso?action=1

10/11/2017 GFT MÉXICO 52


Nivel 1

Los servicios que están en este grado de madurez introducen el concepto


de recurso o en forma general un sustantivo y cada recurso tiene su
propio URI que permite obtenerlo directamente.
http://myserver.com/contexto/empleado
http://myserver.com/contexto/departamento
http://myserver.com/contexto/empresa
Se envía mediante POST
10/11/2017 GFT MÉXICO 53
Nivel 2

Los servicios de este nivel usan los principales métodos del protocolo
HTTP (GET, POST, PUT, DELETE). Ya se encuentran varios endpoints
identificados con el uso de verbos correctos de HTTP.
http://myserver.com/contexto/empleado
Usa GET para consulta de empleados
Usa POST para alta de empleado
Usa PUT para actualizar empleado
Usa DELETE para eliminar empleado
10/11/2017 GFT MÉXICO 54
Nivel 3

Los servicios que están en este nivel retornan enlaces que permiten al
cliente descubrir operaciones y obtener referencias a otros recursos. El
servicio es autodescriptivo y el cliente va navegando por los resultados
para invocar las operaciones. Esto se le llama Hipermedia (HATEOAS).
http://myserver.com/mitienda
Regresa mediante headers y estatus la navegación y URI para realizar
acciones. La navegación es programática y condicionada a acciones
previas y estado de la aplicación de datos.
10/11/2017 GFT MÉXICO 55
Ejercicio práctico de Servicio Rest

Se requiere lo siguiente:
- Instalar nodejs.
- Instalar npm.
- Instalar json server.
- Generar un json que servirá de BD.
- Cliente rest.

10/11/2017 GFT MÉXICO 56


JSON de
Videojuegos.

10/11/2017 GFT MÉXICO 57


REST SOAP
Es especialmente útil para comunicarse a dispositivos Web Services Description Language (WSDL) contiene y
limitados de recursos como dispositivos móviles ya que se describe un set común de reglas y mensajes, operaciones
elimina la información inecesaria que el protocolo SOAP si y localización del Servicio Web. WSDL es una definición
envía (es muy ligero). formal.

La implementación de servicios REST es más simple que SOAP requiere menos 'plumbing code' que los servicios
servicios SOAP. En SOAP Si no se cuenta con las REST, (ej., transaccionalidad, seguridad, coordinación,
herramientas correctas, la interpretación puede tornarse etc.). Con REST aspectos como la seguridad pueden llegar a
demasiado compleja y difícil. ser una tarea difícil de implementarla correctamente.

SOAP soporta diversos protocolos y tecnologías, como


Servicios REST proporcionan un rendimiento superior, WSDL, XSDs, JAX-WS. Por ejemplo con protocolo HTTP
especialmente a través del almacenamiento en caché para estándar de SOAP hace que sea más fácil para él operar a
obtener información que no se ve alterada ni dinámica. través de firewalls y servidores proxy sin modificaciones en
el mismo.
10/11/2017 GFT MÉXICO 58
SOAP vs REST Conclusiones

No hay un claro ganador, pues tanto SOAP como REST siguen siendo muy útiles
en condiciones diferentes, prácticamente depende del tipo de servicios que se
requieran.

Cabe mencionar que REST ha estado tomando fuerza a una velocidad


impresionante. Sin embargo, el hecho de que REST tome fuerza, no significa que
le esté quitando protagonismo a SOAP, pero con la llegada del Internet de las
cosas (IOT) cada vez se conectan más dispositivos a internet que necesitan ser
integrados donde REST está tomando la delantera.

10/11/2017 GFT MÉXICO 59

Вам также может понравиться