SlideShare una empresa de Scribd logo
Diseño de API
con OpenAPI 3.0.2
Pedro J. Molina
@pmolinam
https://metadev.pro
OpenAPI Initiative https://www.openapis.org
https://www.linuxfoundation.org
Miembros
Grupo de Investigación ISA
Promoviendo un estándar para SLAs en APIs:
https://github.com/isa-group/SLA4OAI-Specification
Grupo de Investigación ISA
API
 Servicio para que otros los
consuman
 Descripción técnica (orientado a
devs)
 Promueve la interoperación de
sistemas mediante contratos claros
y perdurables en el tiempo
Application Programmer Interface
API
API como contrato para servicios y clientes
APIs agnósticas de lenguaje
1. CORBA >> C + IDL
2. SOA >> XML + SOAP + WDSL …
3. REST >> JSON + HTTP
Breve Historia
 2011.09 Swagger 1.0
 2015.03 SmartBear compra Swagger
 2016.01 SmartBear dona Swagger a Linux Fund.
 2016.01 OpenAPI 2.0 / Linux Foundation
 2017.07 OpenAPI 3.0
 2018.10 OpenAPI 3.0.2
OpenAPI Initiative
 Herramientas
 Editor http://editor.swagger.io
 Explorador de APIs http://petstore.swagger.io
 Validador https://online.swagger.io/validator
 Generadores opensource para
 skeletons para backends
 proxies para clientes o front-end
 http://swagger.io/swagger-codegen
Casos de uso
1. API Legada
2. Contrato primero
3. Dirigida por el servicio
1. API Legada
 Documentar un API existente
 Construcción del contrato
http://editor.swagger.io
 Validación
 Resultados:
 API documentada
 Generación de SDKs para cliente
API
1. API Legada. Ejemplo
¿Es Nieves un nombre de hombre o de mujer?
Servicio web para descubrirlo
http://www.jerolba.com/mujeres-y-hombres-y-serverless
GET https://us-central1-hombre-o-mujer.cloudfunctions.net/gender?name=nieves
Créditos: Jerónimo López @jerolba
API
openapi: ‘3.0.2'
info:
version: "1.0.1"
title: Hombre o mujer.
tags:
- name: Gender
description: API para género for frecuencia estadística.
1. API Legada. Contrato API
http://bit.ly/gender-openapi3
paths:
/gender:
get:
description: |
Devuelve la probabilidad de que el nombre sea de mujer u hombre.
parameters:
- name: name
in: query
description: Nombre de la persona
required: true
schema:
type: string
responses:
# Response code
‘200’:
description: Respuesta con exito
content:
application/json:
schema:
$ref: ‘#/definitions/GenderResponse’
1. API Legada. Contrato API
'404':
description: Not found
content:
application/json:
schema:
$ref:
'#/components/schemas/GenderNotFoundResponse'
totalMale:
type: number
format: int32
totalFemale:
type: number
format: int32
GenderNotFoundResponse:
required:
- name
- gender
properties:
name:
type: string
gender:
type: string
components:
schemas:
GenderResponse:
required:
- name
- gender
- probability
- totalMale
- totalFemale
properties:
name:
type: string
gender:
type: string
probability:
type: number
format: float
1. API Legada. Contrato API
2. Contrato Primero
 La especificación se escribe en primer lugar
http://editor.swagger.io
 Puede generarse:
 un skeleton para el backend
 Un proxy o SDK para el cliente
 Permite paralelizar el trabajo en backend y frontend.
 Los cambios al contrato pueden versionarse
adecuadamente.
API Cliente
2. Contrato Primero. Servidores disponibles
2. Contrato Primero. Clientes disponibles
3. Dirigida por el servicio
 El servicio define el contrato
 La especificación del API en formato OpenAPI se genera por
una librería que hace reflexión sobre el servicio.
 Requiere cuidado para no romper la compatibilidad del API.
 Ejemplo: https://openapi3.herokuapp.com
 Fuente: https://github.com/pjmolina/event-backend
API Cliente
API ManagementTools
API ManagementTools
 Aportar una capa que se
coloca por delante del API
 Gestionada por 3ºs
 Aporta:
 Autenticación, Autorización
 Seguridad basada en roles
 Protección frente a ataques DOS
 Monetización: cobro por
 Escalado
 Auditoría
 Métricas de uso, analíticas
Ejemplos
 3scale
 Apigee
 Mashape Kong
 CA 7Layers
 Azure API Management
 IBM Bluemix API
Management
 WSO
Escalabilidad en APIs
 API sin estado
 Con un balanceador de carga
en el frontal (como p.e.
nginx o ha-proxy)
 Que distribuye el trafico a N
(con N>=2) servidores
 DNS, SSL y certificados se
configuran solo en el
balanceador
api
lb api
api
#0
#1
#2
443
80
Librerías para usar OpenAPI hoy
 Prototipado
 oas-tools / oas-generator (OpenAPI 3.0) https://www.npmjs.com/package/oas-
generator
 swagger-tools (OpenAPI 2.0) https://www.npmjs.com/package/swagger-tools
 Directorios de Herramientas
 https://github.com/OAI/OpenAPI-Specification/blob/master/IMPLEMENTATIONS.md
 https://openapi.tools/
 https://github.com/metadevpro/openapi3-ts
 Conversión de contratos 2.0 a 3.0
 Mermade https://mermade.org.uk/openapi-converter
Estandarización de APIs
 Gobierno de Holanda
 Estandarizo OpenAPI 3.0 a nivel nacional (2018.05) https://www.linkedin.com/pulse/why-
dutch-government-standardised-openapi-3x-dimitri-van-hees/
 Gobierno de Canadá, British Columbia
https://catalogue.data.gov.bc.ca/group/bc-government-api-registry
 En estudio por la Comisión Europea. Considerando estandarizarlo en toda la
UE.
 eBay publica todas su APIs en formato OpenAPI 3.0
 Stripe https://github.com/stripe/openapi
 AWS
OpenAPI, la Banca y Fintech
 Directiva Europea PSD2
 Directiva para Pagos Digitales
 Mercado Único de Pagos en la UE
 Servicios de iniciación de Pagos (PIS)
 Servicios de información de cuenta (AIS)
https://www.bbva.com/es/lo-saber-la-psd2/
https://www.swift.com/news-events/press-
releases/swift-creates-financial-sector-api-
blueprint
OpenAPI Roadmap
 JSON Schema
 Overlays
 Firmado y encriptado de peticiones: JOSE
 Más métodos de Autenticación (Certs, OAuth2 scopes)
 Multisegment Paths
 Message based API
 Roadmap para 3.1:
https://github.com/OAI/OpenAPI-Specification/issues/1466
CAL Profile
 CAL Profile https://github.com/metadevpro/cal
 Se aceptan contribuciones (Issues, Pull Requests, etc.)
 Recomendaciones para APIs REST sobre OpenAPI
 Implementaciones de Referencia
 NodeJS + TypeScript https://github.com/metadevpro/alba-node
 dotNet Core https://github.com/metadevpro/alba-netcore
Conclusiones
OpenAPI:
 definir
 consumir
 publicar
 documentar
 y gestionar APIs interoperables
¡Gracias!
@pmolinam
OpenAPI 3.0.2

Más contenido relacionado

La actualidad más candente

WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview
Edgar Silva
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
Prem Sanil
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
Philip Senger
 
REST API
REST APIREST API
REST API
Tofazzal Ahmed
 
Apigee Demo: API Platform Overview
Apigee Demo: API Platform OverviewApigee Demo: API Platform Overview
Apigee Demo: API Platform Overview
Apigee | Google Cloud
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
Tony Tam
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
SmartBear
 
Rest API
Rest APIRest API
An introduction to api testing | David Tzemach
An introduction to api testing | David TzemachAn introduction to api testing | David Tzemach
An introduction to api testing | David Tzemach
David Tzemach
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
Pedro J. Molina
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
Sébastien Saunier
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
Gustavo De Vita
 
Api testing
Api testingApi testing
Api testing
HamzaMajid13
 
API Security Lifecycle
API Security LifecycleAPI Security Lifecycle
API Security Lifecycle
Apigee | Google Cloud
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
Tessa Mero
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start Guide
Andrii Gakhov
 
Continuous Quality with Postman
Continuous Quality with PostmanContinuous Quality with Postman
Continuous Quality with Postman
Postman
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API Management
BizTalk360
 
Apigee Edge Overview and Roadmap
Apigee Edge Overview and RoadmapApigee Edge Overview and Roadmap
Apigee Edge Overview and Roadmap
Apigee | Google Cloud
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
Amazon Web Services
 

La actualidad más candente (20)

WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview WSO2 API Manager 2.0 - Overview
WSO2 API Manager 2.0 - Overview
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
 
REST API
REST APIREST API
REST API
 
Apigee Demo: API Platform Overview
Apigee Demo: API Platform OverviewApigee Demo: API Platform Overview
Apigee Demo: API Platform Overview
 
Introducing Swagger
Introducing SwaggerIntroducing Swagger
Introducing Swagger
 
Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1Introducing OpenAPI Version 3.1
Introducing OpenAPI Version 3.1
 
Rest API
Rest APIRest API
Rest API
 
An introduction to api testing | David Tzemach
An introduction to api testing | David TzemachAn introduction to api testing | David Tzemach
An introduction to api testing | David Tzemach
 
Building APIs with the OpenApi Spec
Building APIs with the OpenApi SpecBuilding APIs with the OpenApi Spec
Building APIs with the OpenApi Spec
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
API for Beginners
API for BeginnersAPI for Beginners
API for Beginners
 
Api testing
Api testingApi testing
Api testing
 
API Security Lifecycle
API Security LifecycleAPI Security Lifecycle
API Security Lifecycle
 
Understanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple StepsUnderstanding REST APIs in 5 Simple Steps
Understanding REST APIs in 5 Simple Steps
 
Swagger / Quick Start Guide
Swagger / Quick Start GuideSwagger / Quick Start Guide
Swagger / Quick Start Guide
 
Continuous Quality with Postman
Continuous Quality with PostmanContinuous Quality with Postman
Continuous Quality with Postman
 
API Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API ManagementAPI Management Part 1 - An Introduction to Azure API Management
API Management Part 1 - An Introduction to Azure API Management
 
Apigee Edge Overview and Roadmap
Apigee Edge Overview and RoadmapApigee Edge Overview and Roadmap
Apigee Edge Overview and Roadmap
 
Amazon API Gateway
Amazon API GatewayAmazon API Gateway
Amazon API Gateway
 

Similar a OpenAPI 3.0.2

Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
Pedro J. Molina
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
Alex Puig
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
CloudAppi
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
BEEVA_es
 
RAML
RAMLRAML
RAML
CloudAppi
 
App engine
App engineApp engine
App engine
ThirdWay
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Iniciativa Barcelona Open Data
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
Carlos Toxtli
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
Joaquín Salvachúa
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
lenny
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
INSIGNIA4U
 
SimpleSAMLphp
SimpleSAMLphpSimpleSAMLphp
SimpleSAMLphp
Jaime Pérez Crespo
 
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...equipo24
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Abimael Desales López
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
Alejandro Esquiva Rodriguez
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
CloudAppi
 
Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)
Diego Vasco
 

Similar a OpenAPI 3.0.2 (20)

Diseño de APIs con OpenAPI
Diseño de APIs con OpenAPIDiseño de APIs con OpenAPI
Diseño de APIs con OpenAPI
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Mada metodología ágil de desarrollo de apis
Mada   metodología ágil de desarrollo de apisMada   metodología ágil de desarrollo de apis
Mada metodología ágil de desarrollo de apis
 
WORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API RESTWORKSHOP I: Introducción a API REST
WORKSHOP I: Introducción a API REST
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
RAML
RAMLRAML
RAML
 
App engine
App engineApp engine
App engine
 
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)Curs 2.8. Utilización Automatizada de Datos Publicos (1)
Curs 2.8. Utilización Automatizada de Datos Publicos (1)
 
Google Cloud Platform y Python
Google Cloud Platform y PythonGoogle Cloud Platform y Python
Google Cloud Platform y Python
 
Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios Ruby y las arquitecturas orientadas a servicios
Ruby y las arquitecturas orientadas a servicios
 
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)
 
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
Descubriendo Ruby On Rails (Desarrollo Agil De Aplicaciones Web)
 
SimpleSAMLphp
SimpleSAMLphpSimpleSAMLphp
SimpleSAMLphp
 
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
Taller de Diseño y Desarrollo de Aplicaciones para Twitter - Congreso Interne...
 
Aprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDBAprendiendo AWS Lambda con API Gateway y DynamoDB
Aprendiendo AWS Lambda con API Gateway y DynamoDB
 
Taller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSHTaller Android Party: Automatic API REST + Notificaciones PUSH
Taller Android Party: Automatic API REST + Notificaciones PUSH
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera API
 
Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)Consumo de web service con volley (api rest)
Consumo de web service con volley (api rest)
 

Más de Pedro J. Molina

MDE en la industria
MDE en la industriaMDE en la industria
MDE en la industria
Pedro J. Molina
 
Terraform
TerraformTerraform
Terraform
Pedro J. Molina
 
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
Pedro J. Molina
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
Pedro J. Molina
 
LangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with EssentialLangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with Essential
Pedro J. Molina
 
Are Startups for me?
Are Startups for me?Are Startups for me?
Are Startups for me?
Pedro J. Molina
 
Meow Demo
Meow DemoMeow Demo
Meow Demo
Pedro J. Molina
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
Pedro J. Molina
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
Pedro J. Molina
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
Pedro J. Molina
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
Pedro J. Molina
 
Quid
QuidQuid
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
Pedro J. Molina
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
Pedro J. Molina
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
Pedro J. Molina
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
Pedro J. Molina
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
Pedro J. Molina
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
Pedro J. Molina
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
Pedro J. Molina
 
Hivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
Pedro J. Molina
 

Más de Pedro J. Molina (20)

MDE en la industria
MDE en la industriaMDE en la industria
MDE en la industria
 
Terraform
TerraformTerraform
Terraform
 
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones WebdotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
dotnetMalaga-2020 Gestión de la configuración en aplicaciones Web
 
Infrastructure as Code with Terraform
Infrastructure as Code with TerraformInfrastructure as Code with Terraform
Infrastructure as Code with Terraform
 
LangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with EssentialLangDev 2022 Metamodeling on the Web with Essential
LangDev 2022 Metamodeling on the Web with Essential
 
Are Startups for me?
Are Startups for me?Are Startups for me?
Are Startups for me?
 
Meow Demo
Meow DemoMeow Demo
Meow Demo
 
Essential as the base for Web DSLs
Essential as the base for Web DSLsEssential as the base for Web DSLs
Essential as the base for Web DSLs
 
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. MolinaACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
ACM SIGCHI EICS-2019 Keynote. Quid, Pedro J. Molina
 
Esencia de Web Components
Esencia de Web ComponentsEsencia de Web Components
Esencia de Web Components
 
Esencia de web components
Esencia de web componentsEsencia de web components
Esencia de web components
 
Quid
QuidQuid
Quid
 
Securizando por construcción mediante MDE
Securizando por construcción mediante MDESecurizando por construcción mediante MDE
Securizando por construcción mediante MDE
 
Micro vs Nano (servicios)
Micro vs Nano (servicios)Micro vs Nano (servicios)
Micro vs Nano (servicios)
 
SVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para MicroserviciosSVQDC 2017 Tecnologías para Microservicios
SVQDC 2017 Tecnologías para Microservicios
 
Introducción a Angular
Introducción a AngularIntroducción a Angular
Introducción a Angular
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Microservicios sobre MEAN Stack
Microservicios sobre MEAN StackMicroservicios sobre MEAN Stack
Microservicios sobre MEAN Stack
 
Hivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenDataHivepod: Casos de uso en OpenData
Hivepod: Casos de uso en OpenData
 

Último

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
nicromante2000
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
juanorejuela499
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
SamuelGampley
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
juanjosebarreiro704
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
AbbieDominguezGirond
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
Ecaresoft Inc.
 

Último (6)

Escaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipoEscaneo y eliminación de malware en el equipo
Escaneo y eliminación de malware en el equipo
 
PitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitalesPitchCollabART uniendo talentos, creando maravillas digitales
PitchCollabART uniendo talentos, creando maravillas digitales
 
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJECONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
CONCEPTOS DE PROGRAMACION CUALQUIER LENGUAJE
 
Maquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdfMaquina de Dibujo y Escritura Automática.pdf
Maquina de Dibujo y Escritura Automática.pdf
 
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdfIntroducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
Introducción_a_las_APIs_y_Desarrollo_Back-end-Abbie Dominguez Girondo.pdf
 
Caso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La SalleCaso de exito Cirrus - Hospital La Salle
Caso de exito Cirrus - Hospital La Salle
 

OpenAPI 3.0.2

  • 1. Diseño de API con OpenAPI 3.0.2
  • 6. Grupo de Investigación ISA Promoviendo un estándar para SLAs en APIs: https://github.com/isa-group/SLA4OAI-Specification
  • 8. API  Servicio para que otros los consuman  Descripción técnica (orientado a devs)  Promueve la interoperación de sistemas mediante contratos claros y perdurables en el tiempo Application Programmer Interface
  • 9. API API como contrato para servicios y clientes
  • 10. APIs agnósticas de lenguaje 1. CORBA >> C + IDL 2. SOA >> XML + SOAP + WDSL … 3. REST >> JSON + HTTP
  • 11. Breve Historia  2011.09 Swagger 1.0  2015.03 SmartBear compra Swagger  2016.01 SmartBear dona Swagger a Linux Fund.  2016.01 OpenAPI 2.0 / Linux Foundation  2017.07 OpenAPI 3.0  2018.10 OpenAPI 3.0.2
  • 12.
  • 13. OpenAPI Initiative  Herramientas  Editor http://editor.swagger.io  Explorador de APIs http://petstore.swagger.io  Validador https://online.swagger.io/validator  Generadores opensource para  skeletons para backends  proxies para clientes o front-end  http://swagger.io/swagger-codegen
  • 14. Casos de uso 1. API Legada 2. Contrato primero 3. Dirigida por el servicio
  • 15. 1. API Legada  Documentar un API existente  Construcción del contrato http://editor.swagger.io  Validación  Resultados:  API documentada  Generación de SDKs para cliente API
  • 16. 1. API Legada. Ejemplo ¿Es Nieves un nombre de hombre o de mujer? Servicio web para descubrirlo http://www.jerolba.com/mujeres-y-hombres-y-serverless GET https://us-central1-hombre-o-mujer.cloudfunctions.net/gender?name=nieves Créditos: Jerónimo López @jerolba API
  • 17. openapi: ‘3.0.2' info: version: "1.0.1" title: Hombre o mujer. tags: - name: Gender description: API para género for frecuencia estadística. 1. API Legada. Contrato API http://bit.ly/gender-openapi3
  • 18. paths: /gender: get: description: | Devuelve la probabilidad de que el nombre sea de mujer u hombre. parameters: - name: name in: query description: Nombre de la persona required: true schema: type: string responses: # Response code ‘200’: description: Respuesta con exito content: application/json: schema: $ref: ‘#/definitions/GenderResponse’ 1. API Legada. Contrato API '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/GenderNotFoundResponse'
  • 19. totalMale: type: number format: int32 totalFemale: type: number format: int32 GenderNotFoundResponse: required: - name - gender properties: name: type: string gender: type: string components: schemas: GenderResponse: required: - name - gender - probability - totalMale - totalFemale properties: name: type: string gender: type: string probability: type: number format: float 1. API Legada. Contrato API
  • 20. 2. Contrato Primero  La especificación se escribe en primer lugar http://editor.swagger.io  Puede generarse:  un skeleton para el backend  Un proxy o SDK para el cliente  Permite paralelizar el trabajo en backend y frontend.  Los cambios al contrato pueden versionarse adecuadamente. API Cliente
  • 21. 2. Contrato Primero. Servidores disponibles
  • 22. 2. Contrato Primero. Clientes disponibles
  • 23. 3. Dirigida por el servicio  El servicio define el contrato  La especificación del API en formato OpenAPI se genera por una librería que hace reflexión sobre el servicio.  Requiere cuidado para no romper la compatibilidad del API.  Ejemplo: https://openapi3.herokuapp.com  Fuente: https://github.com/pjmolina/event-backend API Cliente
  • 25. API ManagementTools  Aportar una capa que se coloca por delante del API  Gestionada por 3ºs  Aporta:  Autenticación, Autorización  Seguridad basada en roles  Protección frente a ataques DOS  Monetización: cobro por  Escalado  Auditoría  Métricas de uso, analíticas Ejemplos  3scale  Apigee  Mashape Kong  CA 7Layers  Azure API Management  IBM Bluemix API Management  WSO
  • 26. Escalabilidad en APIs  API sin estado  Con un balanceador de carga en el frontal (como p.e. nginx o ha-proxy)  Que distribuye el trafico a N (con N>=2) servidores  DNS, SSL y certificados se configuran solo en el balanceador api lb api api #0 #1 #2 443 80
  • 27. Librerías para usar OpenAPI hoy  Prototipado  oas-tools / oas-generator (OpenAPI 3.0) https://www.npmjs.com/package/oas- generator  swagger-tools (OpenAPI 2.0) https://www.npmjs.com/package/swagger-tools  Directorios de Herramientas  https://github.com/OAI/OpenAPI-Specification/blob/master/IMPLEMENTATIONS.md  https://openapi.tools/  https://github.com/metadevpro/openapi3-ts  Conversión de contratos 2.0 a 3.0  Mermade https://mermade.org.uk/openapi-converter
  • 28. Estandarización de APIs  Gobierno de Holanda  Estandarizo OpenAPI 3.0 a nivel nacional (2018.05) https://www.linkedin.com/pulse/why- dutch-government-standardised-openapi-3x-dimitri-van-hees/  Gobierno de Canadá, British Columbia https://catalogue.data.gov.bc.ca/group/bc-government-api-registry  En estudio por la Comisión Europea. Considerando estandarizarlo en toda la UE.  eBay publica todas su APIs en formato OpenAPI 3.0  Stripe https://github.com/stripe/openapi  AWS
  • 29. OpenAPI, la Banca y Fintech  Directiva Europea PSD2  Directiva para Pagos Digitales  Mercado Único de Pagos en la UE  Servicios de iniciación de Pagos (PIS)  Servicios de información de cuenta (AIS) https://www.bbva.com/es/lo-saber-la-psd2/ https://www.swift.com/news-events/press- releases/swift-creates-financial-sector-api- blueprint
  • 30. OpenAPI Roadmap  JSON Schema  Overlays  Firmado y encriptado de peticiones: JOSE  Más métodos de Autenticación (Certs, OAuth2 scopes)  Multisegment Paths  Message based API  Roadmap para 3.1: https://github.com/OAI/OpenAPI-Specification/issues/1466
  • 31. CAL Profile  CAL Profile https://github.com/metadevpro/cal  Se aceptan contribuciones (Issues, Pull Requests, etc.)  Recomendaciones para APIs REST sobre OpenAPI  Implementaciones de Referencia  NodeJS + TypeScript https://github.com/metadevpro/alba-node  dotNet Core https://github.com/metadevpro/alba-netcore
  • 32. Conclusiones OpenAPI:  definir  consumir  publicar  documentar  y gestionar APIs interoperables