Download Document

Document related concepts
no text concepts found
Transcript
Desarrollo y servicios web
Luisa Fernanda Rincón Pérez
2016-1
¿Qué haremos hoy?
1. ¿Qué son los servicios RESTful?
2. ¿Cuál es la diferencia entre un servicio RESTful y un
servicio SOAP?
3. ¿Cómo exponer un servicio RESTful en Java?
¿Qué es REST?
Principios arquitectónicos que
resumen cómo los recursos
son definidos y tomados para
sistemas hipermedias
distribuidos tales como HTTP
El término fue introducido en
la tesis doctoral de Roy
Fielding en 2000, quien es uno
de los principales autores de
la especificación de HTTP.
Opera sobre recursos
Todos lo servicios REST
comparten una forma de
invocación y métodos
uniforme utilizando los
métodos de HTTP
GET,POST,PUT,DELETE. No
requieren ninguna capa
adicional
¿Qué es REST hoy?
La palabra REST se usa en un sentido
más amplio para describir cualquier
interfaz web simple que utiliza XML/JSON
y HTTP sin las abstracciones adicionales
de otros protocolos como SOAP
Hoy se usa comunmente para crear APIs para
abplicaciones basadas en la WEB. Los servicios
web basados en la arquitectura REST se llaman
servicios RESTful
¿Cuáles son sus principios básicos?
Todo es un recurso
Cada recurso tiene
un identificador
único
Usa los métodos
estándares del
protocolo http
Un recurso puede
tener múltiples
representaciones:
ejm XML, JSON
Las comunicaciones
son stateless por lo
que no hay
persistencia en las
transacciones
Separa la
representación del
recurso del recurso
mismo
Es escalable pues
no es necesario
preocuparse por el
estado.
¿Cómo se ve una petición a un servicio
REST?
http://www.adwe.es/general/colaboraciones/servicios-web-restful-con-http-parte-iintroduccion-y-bases-teoricas
¿Cuál es la diferencia entre SOAP y REST?
¿Cuál es la diferencia entre SOAP y REST?
En arquitecturas REST, los servicios no publican un
conjunto arbitrario de métodos u operaciones. Por
ejemplo, en REST no se publicará una interfaz con
métodos “addEmpleado”, “removeEmpleado”
Rest accede a la representación de recursos. Por
ejemplo un recurso puede ser representado en html,
json, xml, etc.
Todos
lo
recursos
comparten
las
mismas
operaciones. Actualmente estas operaciones se
apoyan en el protocolo http
( put, get, post,delete)
¿Cómo se ven las operaciones un servicio SOAP y
en un servicio RESTful?
Probar servicio web Rest
http://resttesttest.com/
Algunos servicios REST para probar
http://api.bogotacomovamos.org/datasets
Reglas para exponer APIs
REST
Nivel 1: Uso correcto de
URIs
¿Para qué sirve una URi?
El recurso es la información a la que
queremos acceder o que queremos
modificar o borrar, independientemente
de su formato. Las URL, son un tipo de URI,
Uniform Resource Identifier, que además
de permitir identificar de forma única el
recurso, nos permite localizarlo para poder
acceder a él o compartir su ubicación.
{protocolo}://{dominio o hostname}[:puerto (opcional)]/{ruta del recurso}?{consulta de filtrado}
¿Cómo se estructura una URL?
http://localhost:8080/
serviciosWeb/main.html
Protocolo
host: puerto
(Defecto puerto 80)
Path y nombre del archivo
Otras URL de ejemplo
ftp://www.ftp.org/docs/test.txt
mailto:[email protected]
Objetivo: asignar una
dirección única a cada
uno de los recursos
disponibles en Internet,
como por ejemplo textos,
imágenes, vídeos, etc.
15
Parámetros de las url
http://www.ejemplo.com/foo?p=1&q
=neat
¿Cuáles son los parámetros de
estas URLs?
16
Codificación URL
• Se codifican siguiendo el RFC 1738:
“... Only alphanumeric [0-9a-zA-Z], the special
characters $-_.+!*'() and reserved characters used
for their reserved purposes may be used unencoded
within an URL.”
• Los demás caracteres se codifican de
acuerdo a:
%[reemplazar un caracter por su código ASCII en formato
hexadecimal
- El espacio se codifica con el número 32, que en
hexadecimal es 20, entonces la URL del espacio es
%20
– El espacio puede también ser codificado como “+”
17
Ejemplos de URL
INVÁLIDA
Debería ser:
?q=C%23+.NET+4.0
http://www.google.bg/search?&q=C# .NET 4.0
¿Cuáles son las reglás básicas para ponerle un
nombre a la URI?
 Los nombres de URI no deben implicar una acción,
por lo tanto debe evitarse usar verbos en ellos.
 Deben ser únicas, no debemos tener más de una
URI para identificar un mismo recurso.
 Deben ser independiente de formato.
 Deben mantener una jerarquía lógica.
 Los filtrados de información de un recurso no se
hacen en la URI.
/facturas/234/editar
/facturas/234
/facturas/234.pdf
/facturas/234
Malo, tiene una acción
Bueno, es la misma url
sin importar la acción
Malo, asociado al formato
Bueno, es la misma url
sin importar el formato
/facturas/234/cliente/007
Malo, no sigue estructura lógica
/clientes/007/facturas/234
Bueno, jerarquía lógica
Nivel 2: Entendimiento de
HTTP
Entender los métodos de HTTP
Operación
Descripción operación
GET:
Obtiene un valor. Puede ser un listado
de representaciones de recursos
POST
Guarda una nueva representación de
un recurso instanciada por una
identidad
Elimina un recurso que cumple con
una identidad
Actualiza un recurso que cumple con
una identidad
DELETE
PUT
PATCH
Edita partes concretas de un recurso
Usar correctamente los códigos de estado
•
•
•
•
•
Código 200
Código 400
Código 404
Código 501
Etc
Usar el código de
errores que viene
predefinido en html
http://www.restapitutorial.com/httpstatuscodes.html
Detalle de los códigos HTTP
Tomado de:
http://www.restapitutorial.com/httpstatuscodes.html
Nivel 3: Entender la
arquitectura para exponer la
API
Arquitectura APIs REST
Manejo de
Recursos y de
datos
NO se
preocupa por
HTML o JS
Peticiones y
respuestas
JSON-XML…
JSON-XML…
Cliente UI
Sólo sabe leer y
pintar datos
en pantalla
NO sabe acceder
a BD
Cliente WEB
App Móvil
API REST
JSON-XML…
Otra API REST
¿Qué se requiere desde el servidor para exponer
las APIs REST desde el servidor?
Ruteador para
general las URL
de los recursos
Gestión de
peticiónes y
respuestas
Manejo de
código de
errores
Renderizado
de respuestas
con JSON -XML
Ejemplos
¿Qué se requiere desde el servidor para consumir
las APIs REST desde el cliente?
Ejemplos
Consumo vía Ajax
¿Qué ventajas tiene?
Independencia de
cómo desarrollar el
sistema en cuanto
a las tecnologías
Se debe desarrollar
sólo un backend
que se consume
con vía http
Se puede hacer
despliegue
distribuido
Exponer servicio web REST
en java
Java Edición Empresarial
JEE
JAVA
¿Qué es un servidor de aplicaciones?
¿Qué servidores de aplicaciones existen?
Apache Tomcat
El servidor Tomcat ha sido desarrollado
por "Apache Software
Foundation" http://apache.org/.
Descargar el zip de este sitio
http://tomcat.apache.org/
Descomprimir carpeta en el disco C
Cambiar el puerto del tomcat
En config/servlet.xml cambiar el port en esta parte
por 8090
Subir el servidor. En la carpeta donde este
bin/startup.bat
Si el servidor esta arriba debe aparecer
¿Qué errores se pueden presentar?
¿Cómo se configura el server en un IDE?
¿Cómo se configura el server en un IDE?
El despliegue de las aplicaciones
JAR
Java Archive
Archivo que
permite
ejecutar
aplicacion
es escritas
en el
lenguaje
Java.
Uso: Librerías,
utilidades
WAR
Web
Archive
Comprime la
aplicación
web para
que sea
desplegad
a en un
contenedo
r de
servlets
EAR
Entreprise
Archive
Comprime la
aplicación
web para
que sea
desplegad
a en un
contenedo
r de
servlets
¿Qué otros errores pueden pasar?
Tutorial de referencia
http://crunchify.com/how-to-buildrestful-service-with-java-using-jax-rs-andjersey/
¿Cómo se ve el consumo del servicio JSON?
¿Cómo se ve el consumo del servicio XML?
Referencias
Exponer servicio web RestFul. Java
http://crunchify.com/how-to-build-restfulservice-with-java-using-jax-rs-and-jersey/
Servicios REST - .net
http://www.asp.net/web-api/overview/gettingstarted-with-aspnet-web-api/tutorial-your-firstweb-api
Video de explicación sobre API rest
https://www.youtube.com/watch?v=G8_VvBX6
eQA