SlideShare una empresa de Scribd logo
Taller de Definición de APIs
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
❏ Las APis en el mundo Big Data
❏ Las APis en el mundo Cloud
❏ 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?
APIs más populares
Google Maps
Twitter
YouTube
Flickr
Amazon Product
Advertising
Facebook
Datos recogidos de programmable web
Crecimiento de las Apis
¿Qué es una API?
➢ Del internet de las cosas...
¿Cómo se van a conectar?
El internet de las Apis
¿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
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
➢ 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
➢ 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
➢ 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
➢ Paginación (parámetro limit / offset): Se debe mostrar un offset y el
número de elementos a devolver.
GET /users?limit=100&offset=200
➢ Atributos en la respuesta (parámetro filter). Con el fin de devolver
sólo aquellos atributos que le interesa al developer y no toda la
información, se debe introducir un parámetro que permita filtrar por
sólo unos atributos.
GET /users?fields=nombre
Consideraciones generales
Restful
➢Clientes con métodos limitados: Algunos clientes de la API
pueden no soportar realizar las peticiones POST, DELETE, GET y
PUT.
GET /users?method=DELETE
➢ Atributos con 2 niveles: Si una petición devuelve una lista de
elementos de 2 niveles se debe poder seleccionar si se quiere o no
devolver la información de segundo nivel.
GET /users?expand=address
Consideraciones generales
Restful
Crear un usuario
POST http://apitest.cloudsystems.es/users
body:
{"name": "Marco", "firstname": "Polo", "lastname": "2",
"address": { "descripcion": "blab bla", "number": "2" }}
resultado:
Header:
HTTP CODE: 201
Body:
{"result": { "info": "user created" },
"data": { "id": "23" }
}
Ejemplo
Restful
Obtener usuarios:
GET http://apitest.cloudsystems.es/users?limit=100
resultado:
Header: HTTP CODE: 200
Body:
{ "result": { "info": "OK"},
"data": {
"users": [
{ "name": "Marco","firstname": "Polo",
"address": {"descripcion": "blabbla"}},
{ "name": "Prueba","firstname": "ww",
"address": {"descripcion": "blab bla" }}]
}}
Ejemplo
Restful
Actualizar un usuario
PUT http://apitest.cloudsystems.es/users/23
body:
{lastname:”González”}
resultado:
Header:
HTTP CODE: 200
Body:
{“result”:
{“info”:”user updated”},
{“data”:””}
}
Ejemplo
Restful
Eliminar un usuario
DELETE http://apitest.cloudsystems.es/users/23
resultado:
Header:
HTTP CODE: 200
Body:
{
"result": {
"info": "user deleted"
},
"data": ""
}
Ejemplo
Restful
RAML
Api Designer
#%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
❏ 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
❏ 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
/{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
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
Desarrollo de una implementación con las interfaces
de entrada y salida.
Implementado Fake
RAML
➢ Seguridad. API Managers
➢ Carga del sistema.
➢ Entorno (¿Desplegar en un PAAS o en un IAAS?)
➢ Estadísticas
➢ Logs del sistema
Consideraciones generales
Apis
Ruegos y preguntas
Contacta en:
Email: admin@apiaddicts.org
Web:
http://www.meetup.com/APIAddicts
Siguenos en:
➢ Linkedin: ApiAddicts
➢ Twitter: @apiaddicts
➢ Facebook: APIAddicts
➢ Meetup: APIAddicts
Contacta

Más contenido relacionado

Similar a Taller definición de apis

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
 
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
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-rest
xavazque2
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
Asier Marqués
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
.NET Conf UY
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
Amazon Web Services LATAM
 
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
 
Rest
RestRest
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
 
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
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
Alejandro Esquiva Rodriguez
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
Manuel Pérez
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
Alex Puig
 
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
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
juandavid1118
 
Taller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive SearchTaller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive Search
Luis Beltran
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
Pedro J. Molina
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 

Similar a Taller definición de apis (20)

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
 
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
 
5.2. api-rest
5.2. api-rest5.2. api-rest
5.2. api-rest
 
APIs REST #devfestBilbao
APIs REST #devfestBilbaoAPIs REST #devfestBilbao
APIs REST #devfestBilbao
 
RESTful Para todos by Diego Sapriza
RESTful Para todos by Diego SaprizaRESTful Para todos by Diego Sapriza
RESTful Para todos by Diego Sapriza
 
Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables Construyendo APIs Seguras y Escalables
Construyendo APIs Seguras y Escalables
 
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)
 
Rest
RestRest
Rest
 
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
 
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)
 
Automatic API REST Droidcon
Automatic API REST DroidconAutomatic API REST Droidcon
Automatic API REST Droidcon
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Servicios web en php, perl, java
Servicios web en php, perl, javaServicios web en php, perl, java
Servicios web en php, perl, java
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
 
Taller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive SearchTaller IA 2A - Azure Cognitive Search
Taller IA 2A - Azure Cognitive Search
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
 

Más de CloudAppi

Meme teambuilding
Meme teambuildingMeme teambuilding
Meme teambuilding
CloudAppi
 
Api managers
Api managersApi managers
Api managers
CloudAppi
 
Cloud appi transformacion digital
Cloud appi   transformacion digitalCloud appi   transformacion digital
Cloud appi transformacion digital
CloudAppi
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanz
CloudAppi
 
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
CloudAppi
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apis
CloudAppi
 
Api managers
Api managersApi managers
Api managers
CloudAppi
 
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
 
Seguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerSeguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developer
CloudAppi
 

Más de CloudAppi (9)

Meme teambuilding
Meme teambuildingMeme teambuilding
Meme teambuilding
 
Api managers
Api managersApi managers
Api managers
 
Cloud appi transformacion digital
Cloud appi   transformacion digitalCloud appi   transformacion digital
Cloud appi transformacion digital
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanz
 
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
 
Api managers
Api managersApi managers
Api managers
 
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)
 
Seguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developerSeguridad en las apis desde un punto de vista de developer
Seguridad en las apis desde un punto de vista de developer
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
ManuelCampos464987
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
thomasdcroz38
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
DiegoCampos433849
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
AlejandraCasallas7
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
JimmyTejadaSalizar
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
rafaelsalazar0615
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
SamuelRamirez83524
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
cofferub
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfTRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
TRABAJO DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Diagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestreDiagrama de flujo - ingenieria de sistemas 5to semestre
Diagrama de flujo - ingenieria de sistemas 5to semestre
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdfDesarrollo de Habilidades de Pensamiento.docx (3).pdf
Desarrollo de Habilidades de Pensamiento.docx (3).pdf
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
maestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdfmaestria-motores-combustion-interna-alternativos (1).pdf
maestria-motores-combustion-interna-alternativos (1).pdf
 
Diagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestreDiagrama de flujo soporte técnico 5to semestre
Diagrama de flujo soporte técnico 5to semestre
 
Estructuras básicas_ conceptos de programación (1).docx
Estructuras básicas_ conceptos de programación  (1).docxEstructuras básicas_ conceptos de programación  (1).docx
Estructuras básicas_ conceptos de programación (1).docx
 
Conceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación ProyectoConceptos Básicos de Programación Proyecto
Conceptos Básicos de Programación Proyecto
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 

Taller definición de apis

  • 1. Taller de Definición de APIs 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 ❏ Las APis en el mundo Big Data ❏ Las APis en el mundo Cloud ❏ 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. APIs más populares Google Maps Twitter YouTube Flickr Amazon Product Advertising Facebook Datos recogidos de programmable web Crecimiento de las Apis ¿Qué es una API?
  • 6. ➢ Del internet de las cosas... ¿Cómo se van a conectar? El internet de las Apis ¿Qué es una API?
  • 7. 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
  • 8. 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
  • 9. 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
  • 10. ➢ 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
  • 11. ➢ 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
  • 12. ➢ 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
  • 13. ➢ Paginación (parámetro limit / offset): Se debe mostrar un offset y el número de elementos a devolver. GET /users?limit=100&offset=200 ➢ Atributos en la respuesta (parámetro filter). Con el fin de devolver sólo aquellos atributos que le interesa al developer y no toda la información, se debe introducir un parámetro que permita filtrar por sólo unos atributos. GET /users?fields=nombre Consideraciones generales Restful
  • 14. ➢Clientes con métodos limitados: Algunos clientes de la API pueden no soportar realizar las peticiones POST, DELETE, GET y PUT. GET /users?method=DELETE ➢ Atributos con 2 niveles: Si una petición devuelve una lista de elementos de 2 niveles se debe poder seleccionar si se quiere o no devolver la información de segundo nivel. GET /users?expand=address Consideraciones generales Restful
  • 15. Crear un usuario POST http://apitest.cloudsystems.es/users body: {"name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }} resultado: Header: HTTP CODE: 201 Body: {"result": { "info": "user created" }, "data": { "id": "23" } } Ejemplo Restful
  • 16. Obtener usuarios: GET http://apitest.cloudsystems.es/users?limit=100 resultado: Header: HTTP CODE: 200 Body: { "result": { "info": "OK"}, "data": { "users": [ { "name": "Marco","firstname": "Polo", "address": {"descripcion": "blabbla"}}, { "name": "Prueba","firstname": "ww", "address": {"descripcion": "blab bla" }}] }} Ejemplo Restful
  • 17. Actualizar un usuario PUT http://apitest.cloudsystems.es/users/23 body: {lastname:”González”} resultado: Header: HTTP CODE: 200 Body: {“result”: {“info”:”user updated”}, {“data”:””} } Ejemplo Restful
  • 18. Eliminar un usuario DELETE http://apitest.cloudsystems.es/users/23 resultado: Header: HTTP CODE: 200 Body: { "result": { "info": "user deleted" }, "data": "" } Ejemplo Restful
  • 20. #%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
  • 21. ❏ 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
  • 22. ❏ 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
  • 23. /{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
  • 24. 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
  • 25. Desarrollo de una implementación con las interfaces de entrada y salida. Implementado Fake RAML
  • 26. ➢ Seguridad. API Managers ➢ Carga del sistema. ➢ Entorno (¿Desplegar en un PAAS o en un IAAS?) ➢ Estadísticas ➢ Logs del sistema Consideraciones generales Apis
  • 28.
  • 29. Contacta en: Email: admin@apiaddicts.org Web: http://www.meetup.com/APIAddicts Siguenos en: ➢ Linkedin: ApiAddicts ➢ Twitter: @apiaddicts ➢ Facebook: APIAddicts ➢ Meetup: APIAddicts Contacta