0% encontró este documento útil (0 votos)
11 vistas95 páginas

Api02 - Api Rest

El documento detalla los objetivos de aprendizaje sobre API REST, incluyendo su diseño, implementación con Spring Boot, y documentación con RAML. Se abordan conceptos clave como la arquitectura RESTful, métodos HTTP, y mejores prácticas para el diseño de APIs. Además, se menciona la importancia de herramientas como Swagger y BBVA API Catalog en la gestión y exposición de APIs REST.

Cargado por

Angel Gabriel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
11 vistas95 páginas

Api02 - Api Rest

El documento detalla los objetivos de aprendizaje sobre API REST, incluyendo su diseño, implementación con Spring Boot, y documentación con RAML. Se abordan conceptos clave como la arquitectura RESTful, métodos HTTP, y mejores prácticas para el diseño de APIs. Además, se menciona la importancia de herramientas como Swagger y BBVA API Catalog en la gestión y exposición de APIs REST.

Cargado por

Angel Gabriel
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd

API REST

OBJETIVOS DE APRENDIZAJE

• Conocer las características generales de API REST


• Integrar los patrones de diseño relacionados con API REST
• Crear API REST con Spring Boot
• Diseñar una aplicación completa con Spring Boot
• Diseñar API REST con RAML
• Exponer API REST con Swagger
• Organizar una API REST con Spring Boot
• Integrar métodos HTTP en API REST (GET, POST, PUT, DELETE,
PATCH)
• Gestionar peticiones a la API REST
• Conocer las características generales de BBVA APX Online y APX Batch
• Conocer las características generales de BBVA API Catalog
Tabla de contenidos
1. API REST + RESTful
2. Spring Boot
3. BBVA API Designing
4. BBVA APX Online + BBVA APX Batch
5. BBVA Global API Catalog
01
API REST + RESTful
Características generales
de API REST
REST
• REST
o Representational State Transfer
o “REST está dirigido a obtener una imagen de cómo de bien diseñada está una
aplicación Web: una red de páginas web (una máquina de estados virtual) donde
el usuario navega a lo largo de una aplicación seleccionando enlaces
(transiciones de estado) apareciendo en la siguiente página (siguiente estado)
transfiriendo al usuario y mostrando el contenido para su uso.” – Roy Fielding
o Arquitectura simple sin estado
REST
Componentes arquitectónicos

Elementos de
Conectores Componentes
Datos

Metadata Cliente Servidor de Origen


Recurso
ID
Servidor
Gateway
Metadata

Representación Caché

Proxy
Resolver

Control
Túnel User Agent
REST

API Endpoint
[Link]

Recurso Recurso Recurso Recurso Recurso Recurso


Planets Spaceships Vehicles People Films Species

[Link]
REST

GET
Representa
[Link]

Identifica

Referencia Referencia
Listado de
planetas
REST
Representa
GET
[Link]

Identifica
Ref

Ref
Listado
de Referencia
películas
Referencia

Referencia
Principios de diseño REST

Identificación Unicidad Categorización Lectura

Identificar todas las Crear una URL para Categorizar los Por defecto todos los
entidades que cada recurso recursos con las recursos se pueden
queremos exponer opciones disponibles leer, salvo
(leer, modificar, añadir, restricciones en los
eliminar) permisos

Vínculos Diseño gradual Formato Documentación

Establecer vínculos a Diseñar los servicios Especificar el formato Informar a los clientes
los recursos de manera gradual de respuesta (JSON,
XML, PDF, …)
RESTful

RESTful
– Servicios que implementan la
arquitectura REST
– Típicamente ofrecen todas las
Recurso / GET POST PUT DELETE
Estado operaciones CRUD (Create, Read,
/pedidos
Update,
de pedidosDelete)
Devuelve la lista Crea un pedido Modifica
pedidos
Elimina los
pedidos

– Operaciones
/pedidos/432 Devuelve los
detalles del pedido alineadas
ERROR
con métodos
Modifica el
pedido 432
Borra el pedido
432

HTTP432
¿Cuándo podemos utilizar REST?

Conexión entre Clientes ligeros Rich Internet Apps


plataformas

Interactuar con API Envío de


Exponer datos de públicas o privadas peticiones a la
una fuente interfaz REST
Casi el 70% de API con JavaScript
Consumirlo desde públicas tienen
cualquier interfaz REST Respuestas XML
plataforma o JSON
Características REST

Clientes y Sistema de Interfaz


proveedores capas uniforme
desacoplado
s
Características REST

Clientes y
proveedores
desacoplados
Características REST

Sistema de
capas
Características REST

Identificación
Recursos

Interfaz Manipulación
uniforme Recursos

Mensajes
Autodescriptivos

Motor
Hipermedia
Características REST
• HTTP/1.1 – RFC 2616 (1999) [Link]
• HTTP/2.0 – RFC 7540 (2015) [Link]

o Seguro – Sin efectos laterales – No modifica el recurso


o Idempotente – Efectos laterales similares con una o n peticiones

POST GET
Interfaz Crea un nuevo Obtiene un
uniforme recurso recurso

PUT DELETE
Actualiza o crea Elimina un
un recurso recurso
Crear una API REST

2. Definir la
1. Definir los recursos representación de los
recursos

3. Consideraciones
del protocolo HTTP
Códigos de estado 4. Seguridad
Cacheado
Codificación
Restricciones de REST

Cliente – Servidor Servidor sin Cacheado


estado

Envío de datos
Sesión en el lado Datos cacheados
Latencia cliente
Datos no
Compatibilidad localStorage cacheados (#
sessionStorage peticiones)
Consideraciones de cacheado

Procesado de caché Cacheado


Topología de
cacheado Especificado en las
cabeceras HTTP
Cachés de navegador
1.1/Cache-Control
Cachés de proxy
1.0/Expires

Datos cacheados

Content-Encoding Datos no cacheados


Transfer-Encoding (# peticiones)
Codificado por:
Compresión – GZIP Particionado (chunked)
Cifrado – PGP
Consideraciones de seguridad

Autentificación Autentificación
Seguridad
básica Digest
HTTPS + cifrado de Comprobación MD5
información de información
confidencial confidencial

HMAC Protección
Hash de clave para mensaje
el mensaje
Hash de algunos Protección
elementos transporte
RESTful API – Best Practices

Nombres GET Cabeceras HATEOAS

Utilizar Nombres en Método GET + Utilizar cabeceras Utilizar HATEOAS =


plural en lugar de parámetros no HTTP para definir los Hypermedia as the
Verbos modificarán el estado / formatos de envío Engine of Application
recurso (serialization) State

Operaciones Versionado Errores Métodos

Ofrecer filtrado, Utilizar versionado de Manejar errores con Permitir sobrescribir


ordenación, selección la API códigos de estado métodos HTTP
de campos y paginación HTTP
RESTful API
• Nombres en vez de verbos

Recurso / GET – Leer POST – Crear PUT - Actualiza DELETE


Estado
/pedidos Devuelve la lista Crea un pedido Modifica Elimina los
de pedidos pedidos pedidos
/pedidos/432 Devuelve los Método no Modifica el Elimina el
detalles del pedido permitido pedido 432 pedido 432
432 (HTTP 405)

/getPedidos /eliminarPedidosEnviados /crearNuevoPedido

• GET + Parámetros  No habrá modificaciones


o GET /pedidos/37?activar  sustituir por PUT /pedidos/37 + datos
o GET /pedidos/37/activar  sustituir por PUT /pedidos/37 + datos
RESTful API
• Nombres en plural
o /pedidos en vez de /pedido
o /usuarios en vez de /usuario
o /productos en vez de /producto

• Utilizar sub-recursos para relaciones


o GET /pedidos/27/clientes  Devuelve los clientes del pedido 27
o GET /pedidos/27/productos  Devuelve los productos del pedido 27

• Utilizar HATEOAS
RESTful API
• Ofrecer filtrado, ordenación, selección de campos y paginación
o Filtrado
• GET /pedidos?pagado=SI ➔ Devuelve los pedidos pagados
• GET /pedidos?importe>50 ➔ Devuelve los pedidos de más de 50 €
o Ordenación
• GET /pedidos?sort=-fecha,+importe ➔ Pedidos ordenados por fecha (desc) e importe
(asc)
o Selección de campos
• GET /pedidos?fields=id,fecha,importe
o Paginación
• GET /pedidos?offset=10&limit=5

[Link]
RESTful API
• Versionar nuestra API
o /pedidos/api/v1  /pedidos/api/v2  /pedidos/api/v3.01
• Manejar errores con códigos de estado HTTP
Código Mensaje Resultado
200 OK Todo funciona bien
201 Created Recurso creado
202 Accepted Petición aceptada pero sin procesar
204 OK Recurso eliminado
304 Not Modified Se puede usar datos de caché
400 Bad Request Petición no válida
401 Unauthorized Requiere autenticación de usuario
403 Forbidden Servidor entendió pero rechazó petición
404 Not Found No hay recurso en la URI
405 Method Not Allowed Método HTTP no permitido
422 Unprocessable Entity No se puede procesar la entidad
429 Too Many Requests Posible ataque DoS detectado
500 Internal Server Error No se registra la petición
Diseño de una API con
RAML
Documentar una API
• Beneficios
o Evitar problemas por falta de planificación y diseño previo del componente / API
o Evitar inconsistencia entre los objetos y métodos
o Evitar agujeros de seguridad
o Uso de herramientas que tienen en cuenta la usabilidad y necesidades de los
consumidores/aplicaciones que van a utilizar los servicios
o Realizar mocks testables
o Posibilitar el versionado
o Crear de forma conjunta al desarrollo de la documentación
o Herramientas para la creación y diseño de API
RAML
• RESTful API Modeling Language
o Lenguaje estándar de definición de API
o Lenguaje de modelado para definir API REST de sintaxis sencilla y fácilmente
comprensibles para seres humanos y software
o Especificación no propietaria e independiente basada en YAML y JSON
o Permite definir versión, recursos, métodos, parámetros de URL, seguridad
respuestas, tipos de medios y otros componentes HTTP básicos
o Genera la documentación de la API, casos de prueba, implementa un mock para
acelerar el desarrollo y genera el esqueleto de nuestra aplicación
o Permite definir las respuestas y ejemplos escritos en la especificación como
documentación
RAML
02
Spring Boot
Visión general de Spring
Framework
Spring Framework - Características

Framework Open Source MVC


Más popular y Licenciado bajo Arquitectura Modelo-
utilizado en Java Apache License 2.0 Vista-Controlador

AOP Java EE
Anotaciones
Permite Programación Apps empresariales
Uso de anotaciones Orientada a Aspectos
(AspectJ)

Transacciones
REST API Testing
Gestión
Útil para desarrollar Módulos de testing
programática de
servicios REST Unitario / Integración
transacciones
Spring Framework

2002 2003 2006 2009 2013 2017

1.0 3.0 5.0


0.9 2.0 4.0
Java 8
Principios de Spring

DI AOP Templates

Inyección de Programación Plantillas de


Dependencias Orientada a Aspectos aplicaciones

Alta Cohesión Bajo Acoplamiento Beans

SOLID SOLID Objetos de los que se


Componentes Componentes encarga Spring dentro
integrados comunicados del contenedor
Spring Framework - Beneficios

Simplicidad Flexibilidad Ligereza


Simplifica apps JEE Integración con otras Framework ligero no
POJO – Java Bean herramientas intrusivo

Rapidez Configuraciones Reciclaje


Reduce tiempos y Fácil configuración y Reduce código
costes de desarrollo herencia repetitivo

Sencillez Automatización
Reduce la Facilita la
complejidad del automatización de
desarrollo procesos
Spring Framework – Proyectos
Actualmente existen un total de 24 proyectos alrededor de Spring
Spring Framework - Proyectos
Actualmente existen un total de 24 proyectos alrededor de Spring
Visión general de Spring
Boot
Spring Boot - Características

Microservicios Convención Simplicidad


Solución creada por Principio convención Menos complejidad
Pivotal Software sobre configuración en proyectos

Configuración
Servidores POM
Configuración
Incorporación directa Project Object
automática de Spring
de servidores Models

Métricas
Características no
funcionales
Spring Boot

2014 2016 2017 2020

1.0 1.3 2.0 2.3


Caching
Spring Boot

Spring Spring Servidores Configuración


incrustado o
Boot Framework
@Configuration
s
Spring Boot
Spring Initializr - Características

Servicio Web
Interfaz Web
Permite establecer la
Fácil de usar que
configuración de
simplifica la creación
Spring Boot y
de los JAR
descargar la plantilla

Generación Requisitos
Spring Initializr

[Link]
Spring Initializr – Inicializar un proyecto
• Ir a [Link]
• Elegir opciones de configuración del proyecto
• Generar el proyecto con CTRL + ENTER
• Descargamos el proyecto generado
• Descomprimimos el ZIP
Spring Initializr – Estructura JAR
Spring Initializr – Estructura WAR
Spring Initializr – Ejemplo clase principal
Módulo SpringBootApplication

@Component @ComponentScan
Indica al compilador que la Indica al compilador qué
clase será un componente paquetes vamos a utilizar
en la siguiente clase

@EnableAutoConfiguration @SpringBootApplication

Auto carga los módulos Sustituye a


principales de Spring Boot @Configuration,
@ComponentScan y
@EnableAutoConfiguration
Spring Initializr – Ejemplo [Link]
Spring Initializr desde IntelliJ IDEA*

[Link]
* La versión Community no incluye integración con Spring Initializer por defecto. Con este plugin la tenemos
Ejercicio APIEX01

15 min
Ejercicio
OBJETIVO:
Hola API REST con Spring Boot

INSTRUCCIONES:
1. Acceder al enlace del Codelab
Primeros pasos con
Spring Boot
Spring Boot

Microservicio Standalone Auto

Funcionalidad única Spring Apps Configuración


automática

Embedded JAR Features

Servlet Container Empaquetado JAR vs Production-Ready


WAR
Spring Boot – [Link]
• Archivo de configuración de los detalles de una aplicación Spring Boot
• Permite guardar y configurar propiedades del entorno de la aplicación
• Ubicación:
o src/main/resources
Spring Boot – [Link]
Configuración de una Spring Boot Application | Port Number
o Cambiar puerto HTTP 80 predeterminado

o Basado en configuración YAML

o Programáticamente:
Spring Boot – [Link]
Configuración de una Spring Boot Application | Context Path
o Cambiar la ruta “/” por defecto

o Basado en configuración YAML

o Programáticamente:
Spring Boot – Shut Down
Configuración de una Spring Boot Application | Shut Down
Spring Boot – Registrar nuevo Servlet
Configuración de una Spring Boot Application | Registrar Servlet
Spring Boot – Jetty
Configuración de una Spring Boot Application | Jetty

Spring Boot establece


Tomcat como servidor
predeterminado.
Spring Boot – Logging Levels
Configuración de una Spring Boot Application | Logging Levels
o Ajuste del nivel de registro de eventos
03
BBVA API Designing
Guía de creación de API
en BBVA
Primeros pasos
Primeros pasos
Guía de referencia
Basics
Analysis Refinement
JIRA y BitBucket
DFT Estilo
Git
Plantillas Decálogo
RAML

Execution Review
Endpoints
Validate RAML
Data / Common types
Union
Pull Request
Consideraciones de API externa
General HTTP
JSON
RAML vs OpenAPI POST, PUT, PATCH
Atributo genérico Id
External API = Devuelven los
Prefijo con recurso
Swagger 2.0 nuevos atributos

Error de cliente
URI
Ignorar si no añade
Paginación
valor
Center of Excellence

Tareas Ventajas Equipo

Técnicas Investigación CoP vs CoE

CoP Formación Equipos de


trabajo
Gobierno Calidad
Center of Excellence

Identificar Capturar
Tareas Compartir
técnicas técnicas
técnicas
Prácticas, Técnicas viables
Ayudar a
estrategias, Memoria
practitioners
principios organizativa

Técnicas Soporte a equipos Mejorar el


Organizar CoP
gobierno
Soporte
CoP Organizar
individual Recopilar
colaboración
Aprendizaje métricas
Gobierno entre equipos
equipo Mejora continua
Center of Excellence

Ventajas
Investigación Formación
Guía
Experimentación Formación a
Acompañamiento
y soporte equipos

Investigación Uso de Calidad Costes


recursos
Incrementar la Reducción de
Formación Eficiencia en la calidad de costes mediante
reserva de productos y nuevas
Calidad recursos servicios tecnologías
Center of Excellence

Equipo Casos de
Creación
implementación
Empleados y
Casos de negocio
personas externas
Nuevas prácticas

CoP Equipos de
CoP vs CoE trabajo
Grupo que
Equipos de trabajo comparte interés Responsable de
en una tecnología tareas y
o skill. Voluntario actividades
04
BBVA APX Online + Batch
Características BBVA
Visión general APX
¿Qué es APX?

La Arquitectura APX o Arquitectura de Back-End Java Extendida fue creada con el


propósito de ser una extensión de la Arquitectura de Back-End ofreciendo las
mismas capacidades en el modo distribuido

Open Source Transaccional Mainframe


Construida sobre Alternativa fiable y Ayuda a reducir el
tecnologías Open desacoplada para uso del Mainframe
Source desarrollo de TX

Crítica Disponible
Operaciones críticas 1º runtime disponible
se ejecutan en APX en Plataforma
Arquitectura de APX
Capacidades de APX
Ecosistema de APX
Características BBVA
APX Online
Flujo de ejecución de APX Online
Vista del runtime de APX
Interoperabilidad de Back-Ends
Características BBVA
APX Batch
Procesado de Batch
Componentes de Batch
• Un trabajo está compuesto de varios pasos

• Cada paso tiene:


o Un itemReader
o Un itemProcessor
o Un itemWriter

• Los trabajos los lanza


• el jobLauncher

• Toda la información se Los pasos pueden ser de dos tipos:


• almacena en el jobRepository
TX TX
Chunk Task
05
BBVA Global API Catalog
Características del
catálogo Global API
Global API Catalog
Global API Catalog
Detalle API
¿Cómo contribuir?

Acceso Fork Publicar

Acceso al Copia del Publicar en una


repositorio de repositorio (Fork) nueva rama
BitBucket
Crear una Pull
Request
Feedback
¡MUCHAS GRACIAS!

También podría gustarte