SlideShare una empresa de Scribd logo

Define y desarrolla tu primera api

CloudAppi
CloudAppi

Meetup sobre cómo definir una API

1 de 36
Descargar para leer sin conexión
Define y desarrolla tu primera API
Marco Antonio Sanz
¿Quienes somos?
Grupo de meetup
http://www.meetup.com/API-Addicts/
Meetups realizados
❏ MADA. Metodología ágil de
definición de APIs
❏ Taller: Definición de APIs
❏ Taller: Desarrolla tu primera API
❏ Seguridad en las APIs
❏ El Mundo Big Data y las APis
❏ El Mundo Cloud y las APis
❏ Apis como modelo de negocio
❏ Define y desarrolla tu primera API
Marco Antonio Sanz:http://es.linkedin.com/pub/marco-antonio-sanz-molina-prados/18/335/97/
Patrocinadores
¿qué nos ofrece?
➢ know - how de apis
➢ Experiencia en el gobierno de Apis
➢ Ejemplos de arquitecturas
➢ Experiencia en el mundo Cloud
Calle Velasco 13
Tlf: 658 89 75 75
admin@cloudappi.net ·
www.cloudappi.net
Al pensar en una API, hay que
pensar en desarrollar productos. Es
un traje para varios clientes, por lo
que a todos no les puede quedar
bien.
Un backend se desarrolla pensando
en tu cliente, es un traje hecho a
medida.
API Backend
¿Qué es una API?
1) Realizar un documento funcional
2) Realizar el diseño de la API
3) Realizar una implementación fake
4) Implementar la API
5) Validar la API
6) Generar documentación para developers
7) Generar casos de prueba (códigos de ejemplo)
8) Generar los SDks
Pasos
Definición de Apis
Hay que tener en cuenta los siguientes aspectos:
➢ Protocolo API (SOAP vs REST)
➢ Seguridad de la API,métodos de autenticación y
autorización. Pj: Basic, oauth1, aouth2…
➢ API Manager (wso2, apigee, genoa) vs ESB
(Oracle Service Bus..)
➢ Formato de datos de entrada / salida (xml, json…)
Consideraciones generales
Definición de Apis

Recomendados

Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apisCloudAppi
 
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 apisCloudAppi
 
El mundo cloud y las apis
El mundo cloud y las apisEl mundo cloud y las apis
El mundo cloud y las apisCloudAppi
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocioCloudAppi
 
Big data y las apis
Big data y  las apis Big data y  las apis
Big data y las apis CloudAppi
 
JSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APIJSDays Desarrolla tu primera API
JSDays Desarrolla tu primera APICloudAppi
 
Api managers
Api managersApi managers
Api managersCloudAppi
 

Más contenido relacionado

La actualidad más candente

Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootCloudAppi
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apisCloudAppi
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanzCloudAppi
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCarlos Azaustre
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.jsCarlos Azaustre
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJSCarlos Azaustre
 
Presentación de ACTO Framework parte I
Presentación de ACTO Framework parte IPresentación de ACTO Framework parte I
Presentación de ACTO Framework parte IADWE Team
 

La actualidad más candente (8)

Desarrolla tu primera api con spring boot
Desarrolla tu primera api con spring bootDesarrolla tu primera api con spring boot
Desarrolla tu primera api con spring boot
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apis
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanz
 
Curso de HTML5
Curso de HTML5Curso de HTML5
Curso de HTML5
 
Curso de Desarrollo Web de Platzi
Curso de Desarrollo Web de PlatziCurso de Desarrollo Web de Platzi
Curso de Desarrollo Web de Platzi
 
Login social con node.js
Login social con node.jsLogin social con node.js
Login social con node.js
 
Curso Básico de AngularJS
Curso Básico de AngularJSCurso Básico de AngularJS
Curso Básico de AngularJS
 
Presentación de ACTO Framework parte I
Presentación de ACTO Framework parte IPresentación de ACTO Framework parte I
Presentación de ACTO Framework parte I
 

Destacado

Big Data as PaaS in Enterprises
Big Data as PaaS in EnterprisesBig Data as PaaS in Enterprises
Big Data as PaaS in EnterprisesPankaj Khattar
 
Big data y las apis (big data spain)
Big data y las apis (big data spain)Big data y las apis (big data spain)
Big data y las apis (big data spain)CloudAppi
 
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)pmluque
 
Freedata: la aplicación del Big Data al ehealth
Freedata: la aplicación del Big Data al ehealthFreedata: la aplicación del Big Data al ehealth
Freedata: la aplicación del Big Data al ehealthAna Lorenzo Morales
 
The architecture of data analytics PaaS on AWS
The architecture of data analytics PaaS on AWSThe architecture of data analytics PaaS on AWS
The architecture of data analytics PaaS on AWSTreasure Data, Inc.
 
Internet of Things and Data Analytics for Smart Cities
Internet of Things and Data Analytics for Smart CitiesInternet of Things and Data Analytics for Smart Cities
Internet of Things and Data Analytics for Smart CitiesPayamBarnaghi
 

Destacado (9)

D naiyer resume
D naiyer resumeD naiyer resume
D naiyer resume
 
Big Data as PaaS in Enterprises
Big Data as PaaS in EnterprisesBig Data as PaaS in Enterprises
Big Data as PaaS in Enterprises
 
Big data y las apis (big data spain)
Big data y las apis (big data spain)Big data y las apis (big data spain)
Big data y las apis (big data spain)
 
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)
BIG DATA en CLOUD PaaS para Internet de las Cosas (IoT)
 
Freedata: la aplicación del Big Data al ehealth
Freedata: la aplicación del Big Data al ehealthFreedata: la aplicación del Big Data al ehealth
Freedata: la aplicación del Big Data al ehealth
 
The architecture of data analytics PaaS on AWS
The architecture of data analytics PaaS on AWSThe architecture of data analytics PaaS on AWS
The architecture of data analytics PaaS on AWS
 
Del Dr. Google al e-Paciente
Del Dr. Google al e-PacienteDel Dr. Google al e-Paciente
Del Dr. Google al e-Paciente
 
Building a Data Analytics PaaS for Smart Cities
Building a Data Analytics PaaS for Smart CitiesBuilding a Data Analytics PaaS for Smart Cities
Building a Data Analytics PaaS for Smart Cities
 
Internet of Things and Data Analytics for Smart Cities
Internet of Things and Data Analytics for Smart CitiesInternet of Things and Data Analytics for Smart Cities
Internet of Things and Data Analytics for Smart Cities
 

Similar a Define y desarrolla tu primera api

Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
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 RESTBEEVA_es
 
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
 
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 PUSHAlejandro Esquiva Rodriguez
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-restxavazque2
 
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
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, javaFaby Marcos Solis
 
Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAlberto Ruibal
 

Similar a Define y desarrolla tu primera api (20)

Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller 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
 
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)
 
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
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-rest
 
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)
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
Ajax
AjaxAjax
Ajax
 
Appcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en AndroidAppcircus Academy: Integración de Social Media en Android
Appcircus Academy: Integración de Social Media en Android
 
Diseño web
Diseño webDiseño web
Diseño web
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Diseño web
Diseño webDiseño web
Diseño web
 

Último

EJEMPLO CARTA DE CORRESPONDENCIA EN WORD
EJEMPLO CARTA DE CORRESPONDENCIA EN WORDEJEMPLO CARTA DE CORRESPONDENCIA EN WORD
EJEMPLO CARTA DE CORRESPONDENCIA EN WORDlaurarojas788
 
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...Telefónica
 
Las Tic en casa, las tics en diferentes ambitos
Las Tic en casa, las tics en diferentes ambitosLas Tic en casa, las tics en diferentes ambitos
Las Tic en casa, las tics en diferentes ambitosvikicarmine14
 
FACULTAD DE DERECHO MEXICALI. TRABAJO DE TECNOLOGIAS DE LA INVESTIGACION JUR...
FACULTAD DE DERECHO MEXICALI. TRABAJO DE  TECNOLOGIAS DE LA INVESTIGACION JUR...FACULTAD DE DERECHO MEXICALI. TRABAJO DE  TECNOLOGIAS DE LA INVESTIGACION JUR...
FACULTAD DE DERECHO MEXICALI. TRABAJO DE TECNOLOGIAS DE LA INVESTIGACION JUR...yaniraoceguera
 
Taller crear carta de correspondencia.docx.pdf
Taller crear carta de correspondencia.docx.pdfTaller crear carta de correspondencia.docx.pdf
Taller crear carta de correspondencia.docx.pdfSEBASTIANMICOLTA
 
David_Gallegos - tarea de la sesión 2.pptx
David_Gallegos - tarea de la sesión 2.pptxDavid_Gallegos - tarea de la sesión 2.pptx
David_Gallegos - tarea de la sesión 2.pptxDAVIDROBERTOGALLEGOS
 
IT + IA, La integración de la inteligencia artificial en las redes de comunic...
IT + IA, La integración de la inteligencia artificial en las redes de comunic...IT + IA, La integración de la inteligencia artificial en las redes de comunic...
IT + IA, La integración de la inteligencia artificial en las redes de comunic...Educática
 
Carta de trabajo para los empleados.docx.pdf
Carta de trabajo para los empleados.docx.pdfCarta de trabajo para los empleados.docx.pdf
Carta de trabajo para los empleados.docx.pdfEmanuelminotta
 
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesDesarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesMaricarmen Sánchez Ruiz
 
Arenas Camacho Jose Fernando-Practica sesión 2.pptx
Arenas Camacho Jose Fernando-Practica sesión 2.pptxArenas Camacho Jose Fernando-Practica sesión 2.pptx
Arenas Camacho Jose Fernando-Practica sesión 2.pptxJOSEFERNANDOARENASCA
 
IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024Isidro Navarro
 
Realiza tu primera contribucion a la OCA
Realiza tu primera contribucion a la OCARealiza tu primera contribucion a la OCA
Realiza tu primera contribucion a la OCAMaxime Chambreuil
 
Videos de apoyo, actividad de tecnología
Videos de apoyo, actividad de tecnologíaVideos de apoyo, actividad de tecnología
Videos de apoyo, actividad de tecnologíaampiscastillo903
 
Lista de datos (tecnología) combinación de...
Lista de datos (tecnología) combinación de...Lista de datos (tecnología) combinación de...
Lista de datos (tecnología) combinación de...NicolleAndrade7
 
Ley de Delitos Informaticos y su aplicación en el sector privado.pptx
Ley de Delitos Informaticos y su aplicación en el sector privado.pptxLey de Delitos Informaticos y su aplicación en el sector privado.pptx
Ley de Delitos Informaticos y su aplicación en el sector privado.pptxBasile
 
Creación de una base de datos en el hosting.pptx
Creación de una base de datos en el hosting.pptxCreación de una base de datos en el hosting.pptx
Creación de una base de datos en el hosting.pptxALEJANDRAJOCELYNGUTI
 
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdf
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdfCaso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdf
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdfcasoacerosdeguatemal
 
Carta Word y excel: Primer trabajo tecnología
Carta Word y excel: Primer trabajo tecnologíaCarta Word y excel: Primer trabajo tecnología
Carta Word y excel: Primer trabajo tecnologíaSofiaDiaz692624
 

Último (20)

La píldora de los jueves: Las claves del BREEAM - Leticia Galdos
La píldora de los jueves: Las claves del BREEAM - Leticia GaldosLa píldora de los jueves: Las claves del BREEAM - Leticia Galdos
La píldora de los jueves: Las claves del BREEAM - Leticia Galdos
 
EJEMPLO CARTA DE CORRESPONDENCIA EN WORD
EJEMPLO CARTA DE CORRESPONDENCIA EN WORDEJEMPLO CARTA DE CORRESPONDENCIA EN WORD
EJEMPLO CARTA DE CORRESPONDENCIA EN WORD
 
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
Índice del libro: Máxima Seguridad en Windows: Secretos Técnicos. 6ª Edición ...
 
Las Tic en casa, las tics en diferentes ambitos
Las Tic en casa, las tics en diferentes ambitosLas Tic en casa, las tics en diferentes ambitos
Las Tic en casa, las tics en diferentes ambitos
 
FACULTAD DE DERECHO MEXICALI. TRABAJO DE TECNOLOGIAS DE LA INVESTIGACION JUR...
FACULTAD DE DERECHO MEXICALI. TRABAJO DE  TECNOLOGIAS DE LA INVESTIGACION JUR...FACULTAD DE DERECHO MEXICALI. TRABAJO DE  TECNOLOGIAS DE LA INVESTIGACION JUR...
FACULTAD DE DERECHO MEXICALI. TRABAJO DE TECNOLOGIAS DE LA INVESTIGACION JUR...
 
Taller crear carta de correspondencia.docx.pdf
Taller crear carta de correspondencia.docx.pdfTaller crear carta de correspondencia.docx.pdf
Taller crear carta de correspondencia.docx.pdf
 
David_Gallegos - tarea de la sesión 2.pptx
David_Gallegos - tarea de la sesión 2.pptxDavid_Gallegos - tarea de la sesión 2.pptx
David_Gallegos - tarea de la sesión 2.pptx
 
IT + IA, La integración de la inteligencia artificial en las redes de comunic...
IT + IA, La integración de la inteligencia artificial en las redes de comunic...IT + IA, La integración de la inteligencia artificial en las redes de comunic...
IT + IA, La integración de la inteligencia artificial en las redes de comunic...
 
Carta de trabajo para los empleados.docx.pdf
Carta de trabajo para los empleados.docx.pdfCarta de trabajo para los empleados.docx.pdf
Carta de trabajo para los empleados.docx.pdf
 
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones MóvillesDesarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
Desarrollo de Interfaces 2t Desarrollo Aplicaciones Móvilles
 
Arenas Camacho Jose Fernando-Practica sesión 2.pptx
Arenas Camacho Jose Fernando-Practica sesión 2.pptxArenas Camacho Jose Fernando-Practica sesión 2.pptx
Arenas Camacho Jose Fernando-Practica sesión 2.pptx
 
IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024IA aplicada a las aulas. Aumentame EDU 2024
IA aplicada a las aulas. Aumentame EDU 2024
 
Herramientas tecnologicas para los abogados.pptx
Herramientas tecnologicas para los abogados.pptxHerramientas tecnologicas para los abogados.pptx
Herramientas tecnologicas para los abogados.pptx
 
Realiza tu primera contribucion a la OCA
Realiza tu primera contribucion a la OCARealiza tu primera contribucion a la OCA
Realiza tu primera contribucion a la OCA
 
Videos de apoyo, actividad de tecnología
Videos de apoyo, actividad de tecnologíaVideos de apoyo, actividad de tecnología
Videos de apoyo, actividad de tecnología
 
Lista de datos (tecnología) combinación de...
Lista de datos (tecnología) combinación de...Lista de datos (tecnología) combinación de...
Lista de datos (tecnología) combinación de...
 
Ley de Delitos Informaticos y su aplicación en el sector privado.pptx
Ley de Delitos Informaticos y su aplicación en el sector privado.pptxLey de Delitos Informaticos y su aplicación en el sector privado.pptx
Ley de Delitos Informaticos y su aplicación en el sector privado.pptx
 
Creación de una base de datos en el hosting.pptx
Creación de una base de datos en el hosting.pptxCreación de una base de datos en el hosting.pptx
Creación de una base de datos en el hosting.pptx
 
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdf
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdfCaso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdf
Caso Aceros de Guatemala: Innovación Estética y Sostenibilidad.pdf
 
Carta Word y excel: Primer trabajo tecnología
Carta Word y excel: Primer trabajo tecnologíaCarta Word y excel: Primer trabajo tecnología
Carta Word y excel: Primer trabajo tecnología
 

Define y desarrolla tu primera api

  • 1. Define y desarrolla tu primera API Marco Antonio Sanz
  • 2. ¿Quienes somos? Grupo de meetup http://www.meetup.com/API-Addicts/ Meetups realizados ❏ MADA. Metodología ágil de definición de APIs ❏ Taller: Definición de APIs ❏ Taller: Desarrolla tu primera API ❏ Seguridad en las APIs ❏ El Mundo Big Data y las APis ❏ El Mundo Cloud y las APis ❏ Apis como modelo de negocio ❏ Define y desarrolla tu primera API Marco Antonio Sanz:http://es.linkedin.com/pub/marco-antonio-sanz-molina-prados/18/335/97/
  • 3. Patrocinadores ¿qué nos ofrece? ➢ know - how de apis ➢ Experiencia en el gobierno de Apis ➢ Ejemplos de arquitecturas ➢ Experiencia en el mundo Cloud Calle Velasco 13 Tlf: 658 89 75 75 admin@cloudappi.net · www.cloudappi.net
  • 4. Al pensar en una API, hay que pensar en desarrollar productos. Es un traje para varios clientes, por lo que a todos no les puede quedar bien. Un backend se desarrolla pensando en tu cliente, es un traje hecho a medida. API Backend ¿Qué es una API?
  • 5. 1) Realizar un documento funcional 2) Realizar el diseño de la API 3) Realizar una implementación fake 4) Implementar la API 5) Validar la API 6) Generar documentación para developers 7) Generar casos de prueba (códigos de ejemplo) 8) Generar los SDks Pasos Definición de Apis
  • 6. Hay que tener en cuenta los siguientes aspectos: ➢ Protocolo API (SOAP vs REST) ➢ Seguridad de la API,métodos de autenticación y autorización. Pj: Basic, oauth1, aouth2… ➢ API Manager (wso2, apigee, genoa) vs ESB (Oracle Service Bus..) ➢ Formato de datos de entrada / salida (xml, json…) Consideraciones generales Definición de Apis
  • 7. Utiliza el protocolo HTTP para realizar las peticiones. El estándar RESTFULL, define cómo se deben realizar las peticiones REST, cuales son los métodos HTTP que se deben utilizar y cómo deben estructurarse las uris para que sean user-friendly. Podemos basarnos en https://github.com/WhiteHouse/api-standards para definir nuestra API. Principios básicos: ➢ Una URL identifica un recurso. Por ejemplo, GET http://testapi.cloudsystems.es/users RestFul Definición de Apis
  • 8. ➢ Uniformidad de interfaz. Los recursos se manipulan a través de las métodos HTTP (PUT, GET, POST AND DELETE). ○ POST crea el recurso ○ PUT permite modificarlo ○ DELETE lo elimina ○ GET permite consultarlo. ○ Adicionalmente, se han introducido nuevos métodos, como PATCH (actualización parcial de un recurso). Principios básicos Restful
  • 9. ➢ Uniformidad de salida. Los códigos HTTP de salida: ○ 1xxx: Informacional ○ 2xx: Resultado satisfactorio ■ 200: OK ■ 201: Recurso creado ○ 3xx: Redirecciones ○ 4xx: Errores de cliente ■ 400: Parámetros incorrectos ■ 404: recurso no encontrado Principios básicos Restful
  • 10. ➢ Mensajes autodescriptivos: Los recursos están desacoplados de la representación. ➢ Los mensajes se pueden devolver en varios formatos. Los mensajes se pueden obtener en una variedad de formatos como HTML, XML, json… Para indicar estos formatos, se puede utilizar las cabeceras Content-Type y Accept o bién indicarlo al final de la URI. Por ejemplo: GET testapi.cloudsystems.es/users.json ➢ Todas las peticiones son sin estado. Principios básicos Restful
  • 11. Crear: POST http://apitest.cloudsystems.es/users Modificar: PUT http://apitest.cloudsystems.es/users/23 Eliminar: DELETE http://apitest.cloudsystems.es/users/23 Consultar: GET http://apitest.cloudsystems.es/users Consultar un usuario: GET http://apitest.cloudsystems.es/users/23 Segundo nivel GET http://apitest.cloudsystems.es/users/23/cars urls Restful
  • 12. Crear un usuario request: POST http://apitest.cloudsystems.es/users body: {"name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "street": "blab bla", "number": "2" }} response: Header:HTTP CODE: 201 Body: {"result": { "info": "user created" }, "data": { "id": "23"} } Ejemplo Restful
  • 13. Obtener usuarios: Request: GET http://apitest.cloudsystems.es/users Response: Header: HTTP CODE: 200 Body: { "result": { "info": "OK"}, "data": { "users": [ { "name": "Marco","firstname": "Polo", "address": {"street": "blabbla"}}, { "name": "Prueba","firstname": "ww", "address": {"street": "blab bla" }}] } } } Ejemplo Restful
  • 14. Actualizar un usuario Request: PUT http://apitest.cloudsystems.es/users/23 body: {lastname:”González”} Response: Header: HTTP CODE: 200 Body: { “result”: {“info”:”user updated”}, {“data”:””} } Ejemplo Restful
  • 15. Eliminar un usuario Request: DELETE http://apitest.cloudsystems.es/users/23 Response: Header: 200 OK Body: { "result": { "info": "user deleted" }, "data": "" } Ejemplo Restful
  • 16. ● Fields ● Paging ● Expand ● Method ● Orderby Parámetros Definición de Apis
  • 17. ➢ Devuelve los atributos seleccionados Fields Parámetros request: GET /users?fields=name response: header: http code 200 body: Original: "data": [ {"user": { "name": "marco", “dni”:”123123123”, “age”:”12” “phones”:[“1222”,”222”] }}]} Response: "data": [ {"user": { "name": "marco" }}]}
  • 18. ➢ Parámetro limit / offset: Se debe mostrar un offset y el número de elementos a devolver. request: GET /users?limit=100&offset=200 response: header: http code 200/206 body: Restful { "paging": { "total": 10, "num": 3, "page_size": 100, "next": "/users?limit=100&offset=300", "previous": "/users?limit=100&offset=100", "last": "/users?limit=100&offset=900", "first": "/users?limit=100&offset=0" }, "data": [ {"user": { "name": "marco"}} ] } Paginación
  • 19. Restful request: POST /users?method=put body: body: {"user": { "name": "pepe" }} Response: header: 200 OK body: {"result": { "info": "user updated" }} ➢Algunos clientes de API pueden no soportar realizar las peticiones PUT, DELETE. PUT y DELETE
  • 20. ➢ Permite devolver el segundo o tercer nivel de un json Expand Restful Por defecto request: GET /users response: header: 200 OK body: {"data": [ {"user": { "name": "marco" }} ]} request: GET /users?expand=address response: header: 200 OK body: {"data": [ {"user": { "name": "marco" “address”:{ “street”:”Calle velasco” } }} ]}
  • 21. ➢ Permite indicar el orden de la lista a devolver Orderby Restful request: GET /users?sortby=name DESC response: header: 200 OK body: {"data": [ {"user": { "name": "marco"}} {"user": { "name": "laura"}} ]} ORIGINAL request: GET /users?orderby=name DESC response: header: 200 OK body: {"data": [ {"user": { "name": "laura"}} {"user": { "name": "marco"}} ]}
  • 22. ➢ Cabecera Authentication - Oauth 1.0 / 2.0 - Basic - Hmac Seguridad Restful request: GET /users?expand=address header: Authentication Basic dXN1YXJpbzpwYXNzd29yZA== response: header: 200 OK body: {"data": [ {"user": { "name": "marco" ]} Base64 (usuario:password)
  • 23. - Accept - Content-type Formatos de entrada/salida Restful request: GET /users?expand=address header: Content-Type: application/xml Accept: application/json response: header: 200 OK body: {"data": [ {"user": { "name": "marco" ]} Base64 (usuario:password)
  • 24. Las Apis deben versionarse como cualquier producto software. No tiene por qué coincidir con la implementación y suele indicarse en la url. METHOD /<version>/<resource> Versionado Restful request: GET /1/users?expand=address header: Content-Type: application/xml Accept: application/json response: header: 200 OK body: {"data": [ {"user": { "name": "marco" ]}
  • 26. #%RAML 0.8 title: GitHub API version: v3 baseUri: https://api.github.com mediaType: application/json protocols: [ HTTP, HTTPS ] schemas: - User: schema/user.json Users: schema/users.json Org: schema/org.json Orgs: schema/orgs.json song** Parámetros generales de la API Existe una sección principal que describe información general de la API, como la siguiente: ❏ title: Título de la API ❏ version: versión de la API. ❏ baseUri: url dónde se va a desplegar la API. ❏ mediaType: Tipo de dato de que va a soportar la API ❏ protocols: Protocolos disponibles para la API (HTTP/HTTPS) ❏ schemas: permite importar schemas json para ser utilizados posteriormente Documento root RAML
  • 27. ❏ parámetros globales: permiten definier parámetros comunes a varios servicios. ❏ queryParameters: Son los parámetros que van en la query. Son los que se pasan como get XXX/users?username=marco ❏ uriParameters: son los parámetros que van directamente en la URI. En RestFul sólo deberían ser identificadores de recursos. ❏ responses: Respuestas del servicio. Hay que especificar el formato de respuesta, y además, se puede añadir su schema y un ejemplo. Los schemas pueden ir en json schema o en xsd. /users: is: [ paged ] get: queryParameters: username: description: user to find 200: body application/json: example: | { "result": { "info": "user created" } Métodos GET RAML
  • 28. ❏ body: Toda petición post debe ir acompañada con información de entrada. ❏ responses: Respuestas del servicio. Hay que especificar el formato de respuesta, y además, se puede añadir su schema y un ejemplo. Los schemas pueden ir en json schema o en xsd. post: description: creates an user body: application/json: example: | {"name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }} responses: 200: body: application/json: example: | {"result": { "info": "user created" }, "data": { "id": "23" } } Métodos POST RAML
  • 29. put: description: updates an user body: application/json: example: | {"name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }} responses: 200: body: application/json: example: | {"result": {"info": "user updated"},"data": ""} ❏ uriParameters: Permite identificar un recurso ❏ queryParameters: Permite filtrar los recursos ❏ responses: Respuestas del servicio. Hay que especificar el formato de respuesta, y además, se puede añadir su schema y un ejemplo. Los schemas pueden ir en json schema o en xsd. ❏ body: Enviar los campos a modificar. Se debería utilizar el método HTTP PATCH para modificaciones parciales. Métodos PUT RAML
  • 30. /{userId}: uriParameters: userId: description: user id delete: description: removes a user responses: 200: body: application/json: example: | { "result": { "info": "user deleted" }, "data": "" } ❏ uriParameters: Permite identificar un recurso ❏ queryParameters: Permite filtrar los recursos ❏ responses: Respuestas del servicio. Hay que especificar el formato de respuesta, y además, se puede añadir su schema y un ejemplo. Los schemas pueden ir en json schema o en xsd. Métodos DELETE RAML
  • 31. Desarrollo de una implementación con las interfaces de entrada y salida. Implementado Fake RAML
  • 32. Desarrollo de una implementación con las interfaces de entrada y salida. Implementado Fake RAML
  • 33. ➢ Seguridad. API Managers ➢ Carga del sistema. ➢ Entorno (¿Desplegar en un PAAS o en un IAAS?) ➢ Estadísticas ➢ Logs del sistema Consideraciones generales Apis
  • 36. Contacta en: Email: admin@apiaddicts.org Web: http://www.meetup.com/APIAddicts Siguenos en: ➢ Linkedin: ApiAddicts ➢ Twitter: @apiaddicts ➢ Facebook: APIAddicts ➢ Meetup: APIAddicts Contacta