API: REST o RESTful WEB-SERVICES

Documentos relacionados
Desarrollo y servicios web

Sesión 17. Servicios web RESTful

Arquitectura e Integración de Sistemas Software. Proyecto: Gestión de Almacenes de Libros

Portal Inteligente Medellín Documentación de la Arquitectura de Software

RESTful en Drupal 8. Creando Servicios Web desde el Core

Tema 1: Patrones Arquitectónicos

Tema 5. APIs y Servicios web

PROCESAMIENTO DISTRIBUIDO

SAP FIORI Una evolución en la experiencia de usuarios

Servicios Web. Desarrollo de Aplicaciones Empresariales

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

Curso Developing ASP.NET MVC 4 Web Applications (20486)

Enlace B2B Manual del API

Tema 1: Patrones Arquitectónicos

APLICACIONES DE INTERNET: SOAP

MANUAL DE USUARIO SISTEMA DE COSTOS ABC SICUD ABC

CONCEPTO DE ARQUITECTURA CLIENTE / SERVIDOR.

PROYECTOS DE WEBSERVICE PARA DESARROLLADORES. 12 Agosto 2016

Tema 3.1: Introducción a Servicios Web

Diseño: Arquitectura de Software. IF 7100 Ingeniería del Software

Online Arquitecture. Page1. Video filmado con GeneXus tm 15

PRACTICA FINAL. Diseño e implementación de un servidor Web básico y cliente http. Protocolo HTTP-RC

Desarrollo y servicios web

Developing ASP.NET MVC 4 Web Applications

Especificación de Uso. Servicios Web Externos API Servicio Licencias Ed. Superior V-0.1

Si usted quiere desarrollar con Bluevia y Java, esto es lo primero que debe saber

TEMA 4: SERVICIOS HTTP

IMPLEMENTACIÓN DE INTEGRACIÓN DE SISTEMAS HEREDADOS UTILIZANDO WEB SERVICES

SERVICIOS WEB DE MODIFICACIÓN DE LA D.G. DEL CATASTRO Introducción general

PRACTICA FINAL. Diseño e implementación de un servidor FTP básico y cliente ftp. Protocolo FTP-RC

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

Tema 1 HTTP y aplicaciones web

Corpus. Un producto de la familia. Historia digital corporativa. Workflow para la gestión documental

Arquitectura tecnológica de la empresa

Programa de Actualización Profesional Curso: Java Avanzado JEE7 Programa del Curso

Introducción al DOM WEB-TECHNOLOGIES

Sistemas Distribuidos Servicios web. Rodrigo Santamaría

SISTEMATIZACIÓN DE LA GENERACIÓN DE PRESUPUESTOS PARA PROYECTOS DE OBRA: SISTEMA DE ADMINISTRACIÓN DE MATERIALES DE TUBERÍA

Aplicaciones Web. Aplicaciones Distribuidas

Ingeniería de Aplicaciones Web

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

5. Desarrollo de Aplicaciones en Internet

Arquitectura Java Web. Ing. Juan Zevallos Valle

2.6 DISEÑO ARQUITECTONICO

20488 Desarrollo de Microsoft SharePoint Server 2013 Core Solutions

Realización CU62: Registrar cuadrilla

UNIDAD 1. INTRODUCCIÓN A LAS INTERFACES. Programación de Interfaces

Planeador de Torneos y Competencias: PLATYCO. Documentación de la Arquitectura de Software

CAPITULO V CONCLUSIONES Y RECOMENDACIONES

Servicios web. Jorge Iván Meza Martínez

Curso JAVA EE

Tema 4: Tecnologías Web Java

APLICACIÓN DE LA EVALUACION DIAGNOSTICA. Elaboración de Páginas Web 6 Semestre

TEMA 1. Introducción a las arquitecturas distribuidas

SDD-Documento de diseño del sistema

Punto 3 Protocolo HTTP. Juan Luis Cano

20480 Programación en HTML5 con JavaScript y CSS3

Web Map Service (WMS)

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

TECNOLOGÍAS ASOCIADAS A LAS APLICACIONES WEB

Aspectos pragmáticos de los lenguajes de programación

Lenguajes de marcado para presentación de Páginas web.

Introducción a Web Services

La funcionalidad básica de un navegador web es permitir la visualización de documentos de texto, posiblemente con recursos multimedia incrustados.

Versión: 01. Fecha: 01/04/2013. Código: F004-P006-GFPI GUÍA DE APRENDIZAJE Nº 1 1. IDENTIFICACIÓN DE LA GUIA DE APRENDIZAJE

Plan de Estudios Experto Desarrollo GIS

Transcripción:

API: REST o RESTful JUAN CARLOS CONDE RAMÍREZ WEB-SERVICES

API: Qué? y Por qué? Si estás construyendo apps o sitios Web, es probable que ya hayas oído hablar de APIs REST o incluso ya hasta las hayas utilizado, pero probablemente no estás seguro de qué es, si debes usarlas o por donde comenzar. Se sabe que el termino API significa Interfaz de Programación de Aplicaciones. Pero en el mundo del desarrollo Web el término API es sinónimo de servicios Web, los cuales son utilizados por aplicaciones cliente que recuperan o actualizan datos. Estos servicios en línea han tenido varios nombres y formatos a lo largo de los años, tal como SOAP, sin embargo actualmente la opción más popular es usar APIs tipo REST (ó RESTful). FCC-BUAP 2

Lógica de negocio embebida, I Considera una aplicación moderna la cual pude incluir varias aplicaciones móviles ejecutables sobre diferentes plataformas y usualmente algún tipo de aplicación Web también. Sin un API, una arquitectura básica podría lucir como la siguiente, donde cada aplicación cliente tiene su propia lógica de negocio embebida. FCC-BUAP 3

Lógica de negocio embebida, II Nótese que cada lógica de negocio reside en cada una de las aplicaciones cliente y puede estar escrita en diferentes lenguajes, que a su vez se conectan directamente con una base de datos para obtener, actualizar o manipular datos. Esta lógica de negocio local muestra que cada aplicación cliente puede volverse compleja fácilmente ya que deben mantenerse sincronizadas mutuamente, es decir, cuando se requiera agregar una nueva característica, cada aplicación tendrá que ser actualizada. Esto puede ser un proceso muy costoso que a menudo conduce a la fragmentación de características, bugs y puede frenar la innovación. FCC-BUAP 4

Lógica de negocio centralizada, I Ahora considera la misma arquitectura con un API central, el cual es responsable de toda la lógica de negocio. Cada aplicación utiliza el mismo API para obtener, actualizar y manipular datos. Todas las aplicaciones tienen paridad de características, es decir, son uniformes. FCC-BUAP 5

Lógica de negocio centralizada, II Así cuando tú necesitas hacer algún cambio sólo tienes que hacerlo en un solo lugar (on-line) usando el principio de desarrollo de software: No te repitas (DRY Don t Repeat Yourself). Las aplicaciones en sí mismas se convierten en capas UI relativamente ligeras. FCC-BUAP 6

APIs de tipo REST, I En términos simples REST es un estándar para la Transferencia de Estados Representacionales que es un patrón arquitectónico para la creación de APIs que usan HTTP como protocolo subyacente de comunicación. REST fue concebido originalmente por Roy Fielding en su trabajo de tesis titulado Estilos Arquitectónicos y el Diseño las Arquitecturas de Software basadas en Red, donde en el capítulo 5 habla de REST específicamente. Casi cualquier dispositivo que se conecta a Internet hoy en día utiliza HTTP; protocolo base sobre el cual está construido Internet, siendo así una gran plataforma para la creación de APIs. FCC-BUAP 7

APIs de tipo REST, II HTTP es un sistema de solicitudes y respuestas; un cliente envía una solicitud a un destino final, mejor conocido como endpoint, que responde. El cliente y el endpoint puede ser cualquiera pero un ejemplo típico es un navegador que accede a un servidor Web o una aplicación que accede a una API. Hay varios detalles clave de implementación con HTTP que debes conocer: FCC-BUAP 8

Implementación con HTTP, I Recursos REST utiliza recursos direccionables para definir la estructura del API. Estos son URLs como las que utilizas para acceder a páginas Web, por ejemplo un recurso es http://www.microsoft.com/surface-pro-3. Verbos de Solicitud Estos describen lo que tú quieres hacer con el recurso. Un navegador comúnmente utiliza un verbo GET para indicarle al endpoint que necesita obtener datos, sin embargo existen otros varios verbos disponibles tales como POST, PUT y DELETE. Puedes consultar la lista completa en: https://www.w3.org/protocols/rfc2616/rfc2616-sec9.html Encabezados de Solicitud Estos son instrucciones adicionales que son enviadas junto con la solicitud. Esto puede definir qué tipo de respuesta es requerida o incluso detalles de autorización. Puedes consultar la lista completa en: https://www.w3.org/protocols/rfc2616/rfc2616-sec14.html FCC-BUAP 9

Implementación con HTTP, II Cuerpo de la Solicitud Son los datos que son enviados en la solicitud. Por ejemplo un POST (creación de un nuevo elemento o item) requerirá algunos datos enviados típicamente como el formato de la solicitud enviada (XML o JSON). Cuerpo de la Respuesta Es la parte principal de la respuesta. Si la solicitud fue hecha a un servidor Web, probablemente esta será una página HTML completa, si fue hecha a una API, posiblemente sea un documento JSON o XML. Códigos de Estatus de la Respuesta Estos códigos describen los posibles problemas con las respuestas y proporcionan al cliente los detalles del estatus de la solicitud. La lista completa la puedes consultar en: https://www.w3.org/protocols/rfc2616/rfc2616-sec10.html FCC-BUAP 10

Relación Recurso-Verbo, I En el contexto de una API tipo REST, los recursos representan típicamente datos de entidades (i.e. Producto, Persona, Orden, etc.). El verbo que es enviado en la solicitud informa al API qué hacer con el recurso. Por ejemplo: Una solicitud GET obtendría datos acerca de una entidad, pero una solicitud POST crearía una nueva entidad. FCC-BUAP 11

Relación Recurso-Verbo, II En una convención vigente GET solicita una entidad a través de una URL, por ejemplo /Productos, y esta devuelve una lista de productos quizás coincidentes con algunos criterios enviados con la solicitud. Sin embargo, para recuperar un producto específico, se podría usar su ID de producto como parte del recurso. Por ejemplo: /Productos/81 retornaría al producto con ID igual a 81. Con un API también es posible usar una cadena de parámetros de consulta, por ejemplo se puede tener algo como /Productos?Colo=rojo lo cual retornaría una lista de todos los productos de color rojo. FCC-BUAP 12

Relación Recurso-Verbo, III A continuación, algunas solicitudes típicas que podrías esperar utilizar con una API de comercio electrónico (ecommerce): Recurso Verbo Resultado Esperado Código de Respuesta /Productos GET Una lista de productos del sistema 200/OK /Productos?Color=rojo GET Una lista de productos del sistema donde el color es rojo 200/OK /Productos POST Creación de un nuevo producto 201/Created /Productos/81 GET Producto con ID 81 200/OK /Productos/881 (donde el ID no existe) GET Algún mensaje de error 404/Not Found /Productos/81 PUT Una actualización del producto con ID 81 204/No Content /Productos/81 DELETED La eliminación del producto con ID 81 204/No Content /Clientes GET Una lista de todos los clientes 200/OK FCC-BUAP 13

Arquitectura RESTful, I Una aplicación o arquitectura de estilo REST considera varias de las siguientes cinco características. En la medida en que se cumpla con todas las características, dicha aplicación o arquitectura podrá ser referida como de tipo RESTful. Estas características también pueden ser vistas como principios de diseño, los cuales necesitan ser seguidos cuando se trabaja con servicios basados con una arquitectura RESTful. FCC-BUAP 14

Arquitectura RESTful, II 1. Cliente-Servidor RESTful Este es el requerimiento fundamental de una arquitectura REST. Significa que el servidor tendrá un servicio Web RESTful el cual proveerá la funcionalidad requerida a uno o varios clientes. El cliente envía una solicitud al servicio Web ubicado en el servidor, por lo que el servidor rechazará o aceptará (y cumplirá) con la solicitud proporcionando una respuesta adecuada al cliente. FCC-BUAP 15

Arquitectura RESTful, III 2. Pérdida de Estado El concepto de Stateless (sin estado) significa que depende del cliente garantizar que toda la información requerida para una transacción sea proporcionada al servidor. El servidor no debe mantener ninguna búsqueda o información entre solicitud y solicitud del cliente. Se trata de una simple secuencia pregunta-respuesta, independiente una de otra. Cuando el cliente realiza una pregunta, el servidor responde apropiadamente, pero no recuerda el escenario anterior (pregunta-respuesta); para esto se necesitaría hacerse una nueva pregunta independiente. FCC-BUAP 16

Arquitectura RESTful, IV Por ejemplo: Si borras un recurso en el servidor usando el comando DELETE, no esperes que la información borrada pase a la siguiente solicitud. En este caso particular, con el fin de asegurarte que la información fue borrada, necesitarías hacer una solicitud GET para obtener todos los recursos en el servidor y ver si el recurso fue eliminado. FCC-BUAP 17

Arquitectura RESTful, V 3. Caché El concepto de Cache tiene la función de ayudar con el problema de la perdida de estado (stateless) descrito anteriormente. Dado que cada solicitud cliente-servidor es independiente por naturaleza, muchas veces el cliente tendrá que realizar la misma solicitud al servidor. Esto incrementa el tráfico en la red, por lo que el concepto de cache se maneja del lado del cliente para almacenar solicitudes que ya hayan sido enviadas al servidor. FCC-BUAP 18

Arquitectura RESTful, VI Así que si el cliente realiza la misma solicitud, en lugar de obtener la respuesta del servidor, irá a la caché y obtendrá la información requerida. Evidentemente esto ahorra la cantidad de tráfico de red entre cliente-servidor. FCC-BUAP 19

Arquitectura RESTful, VII 4. Sistema de Capas El concepto de sistema de capas se refiere a cualquier capa adicional, tal como una capa de middleware, que sea insertada entre el cliente y el servidor real que aloja el servicio web RESTFul. Debe recordarse que muchas veces la capa de middleware es en donde se crea toda la lógica de negocio. Este puede ser un servicio adicional con el cual el cliente podría interactuar antes de hacer una llamada al servicio Web principal. Pero la inclusión de esta capa debe ser transparente para que no perturbe la interacción entre el cliente y el servidor. FCC-BUAP 20

Arquitectura RESTful, VIII 5. Interfaz/Contrato Uniforme Esta es la técnica subyacente que define cómo deben trabajar los servicios Web RESTful. Básicamente se trabaja sobre la capa del protocolo HTTP utilizando los siguientes verbos con su respectivo propósito, para trabajar con los recursos ubicados en el servidor. POST para crear un recurso en el servidor. GET para obtener un recurso desde el servidor. PUT para cambiar el estado de un recurso o para actualizarlo. DELETE para remover o borrar un recurso desde el servidor. FCC-BUAP 21