SlideShare una empresa de Scribd logo

JSDays Desarrolla tu primera API

CloudAppi
CloudAppi

Taller para desarrollar tu primera API utilizando node.js y MongoDB partiendo de un RAML que hemos realizado en el #JSDays.

1 de 35
Descargar para leer sin conexión
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
❏ 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
❏ Realizar un documento funcional
❏ Realizar el diseño de la API
❏ Realizar una implementación fake
❏ Implementar la API
❏ Validar la API
❏ Generar documentación para developers
❏ Generar casos de prueba (códigos de ejemplo)
❏ Generar los SDks
Pasos para desarrollar una API
Índice
Datos recogidos de google Trend
Búsquedas por lenguajes en google Commits por lenguaje en github
Datos recogidos de ohloh.net
Primeros pasos
¿Qué lenguaje utilizo?
➢ Es una tecnología que está en auge
➢ El lenguaje es Javascript, que todo el
mundo conoce.
➢ Es muy fácil desarrollar una API con el
módulo express
➢ integración con RAML (proyecto osprey)
¿Por qué node.js?
Primeros pasos

Recomendados

Taller desarrollo de apis
Taller desarrollo de apisTaller desarrollo de apis
Taller desarrollo de apisCloudAppi
 
Taller definición de apis
Taller definición de apisTaller definición de apis
Taller definición de apisCloudAppi
 
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
 
Define y desarrolla tu primera api
Define y desarrolla tu primera apiDefine y desarrolla tu primera api
Define y desarrolla tu primera apiCloudAppi
 
Big data y las apis
Big data y  las apis Big data y  las apis
Big data y las apis CloudAppi
 
Marco antonio sanz
Marco antonio sanzMarco antonio sanz
Marco antonio sanzCloudAppi
 
El mundo cloud y las apis
El mundo cloud y las apisEl mundo cloud y las apis
El mundo cloud y las apisCloudAppi
 

Más contenido relacionado

Destacado

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
 
Api managers
Api managersApi managers
Api managersCloudAppi
 
Cloud appi transformacion digital
Cloud appi   transformacion digitalCloud appi   transformacion digital
Cloud appi transformacion digitalCloudAppi
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apisCloudAppi
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocioCloudAppi
 
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 developerCloudAppi
 
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
 

Destacado (7)

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
 
Api managers
Api managersApi managers
Api managers
 
Cloud appi transformacion digital
Cloud appi   transformacion digitalCloud appi   transformacion digital
Cloud appi transformacion digital
 
Gobierno de apis
Gobierno de apisGobierno de apis
Gobierno de apis
 
Las apis como modelo de negocio
Las apis como modelo de negocioLas apis como modelo de negocio
Las apis como modelo de negocio
 
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
 
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
 

Similar a JSDays Desarrolla tu primera API

Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microserviciosPedro J. Molina
 
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
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para TodosMariano Iglesias
 
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
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2Steven Gomez
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
Servicios web
Servicios webServicios web
Servicios webitoomac02
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"www.encamina.com
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleArmando Nuñez Ramos
 
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
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispanohdgarcia
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 

Similar a JSDays Desarrolla tu primera API (20)

Servicios web
Servicios webServicios web
Servicios web
 
Tecnologías para microservicios
Tecnologías para microserviciosTecnologías para microservicios
Tecnologías para microservicios
 
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)
 
Ajax
AjaxAjax
Ajax
 
Servicios web java, php, perl, google
Servicios web java, php, perl, googleServicios web java, php, perl, google
Servicios web java, php, perl, google
 
Node.js - Eventos para Todos
Node.js - Eventos para TodosNode.js - Eventos para Todos
Node.js - Eventos para Todos
 
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
 
Reportes En J Developer Parte 1 Y 2
Reportes En J Developer   Parte 1 Y 2Reportes En J Developer   Parte 1 Y 2
Reportes En J Developer Parte 1 Y 2
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web
Servicios webServicios web
Servicios web
 
"Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore""Los Imprescindibles de .NetCore"
"Los Imprescindibles de .NetCore"
 
Servicios web
Servicios webServicios web
Servicios web
 
Servicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y GoogleServicios web en Java, PHP, Perl y Google
Servicios web en Java, PHP, Perl y Google
 
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
 
Node js Alt.net Hispano
Node js Alt.net HispanoNode js Alt.net Hispano
Node js Alt.net Hispano
 
OpenAPI 3.0.2
OpenAPI 3.0.2OpenAPI 3.0.2
OpenAPI 3.0.2
 
Cien usos con serverless
Cien usos con serverlessCien usos con serverless
Cien usos con serverless
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 

Último

Taller 1 sobre operadores tecnologicos.pdf
Taller 1 sobre operadores tecnologicos.pdfTaller 1 sobre operadores tecnologicos.pdf
Taller 1 sobre operadores tecnologicos.pdfAna Lucía Tellez Lugo
 
VIDEOS DE APOYO-como subir un documento de slideshare.docx
VIDEOS DE APOYO-como subir un documento de slideshare.docxVIDEOS DE APOYO-como subir un documento de slideshare.docx
VIDEOS DE APOYO-como subir un documento de slideshare.docxsamuelvideos
 
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG 9-5
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG  9-5VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG  9-5
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG 9-5sarayibanez16
 
Silicon_Valley_RSA_2024_Latam_Immersion.pdf
Silicon_Valley_RSA_2024_Latam_Immersion.pdfSilicon_Valley_RSA_2024_Latam_Immersion.pdf
Silicon_Valley_RSA_2024_Latam_Immersion.pdfOBr.global
 
Mapa conceptual de las Comunidades virtuales
Mapa conceptual de las Comunidades virtualesMapa conceptual de las Comunidades virtuales
Mapa conceptual de las Comunidades virtualesEstefanía López
 
Abrirse Camino en Open Source: Oportunidades, Contribuciones y Carrera
Abrirse Camino en Open Source: Oportunidades, Contribuciones y CarreraAbrirse Camino en Open Source: Oportunidades, Contribuciones y Carrera
Abrirse Camino en Open Source: Oportunidades, Contribuciones y CarreraEdith Puclla
 
COMBINACIONES CORRESPONDENCIA con base de datos excel
COMBINACIONES CORRESPONDENCIA con base de datos excelCOMBINACIONES CORRESPONDENCIA con base de datos excel
COMBINACIONES CORRESPONDENCIA con base de datos excelSergioPerdomo20
 
Presentación paginas web partes principales
Presentación paginas web partes principalesPresentación paginas web partes principales
Presentación paginas web partes principalesandresarceavalos
 
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEP
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEPVIDEOS DE APOYO PARA TECNOLOGIA LICEO DEP
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEPAlejandraCasallas7
 
Sentencia Tribunal Ambiental Data Center de Google
Sentencia Tribunal Ambiental Data Center de GoogleSentencia Tribunal Ambiental Data Center de Google
Sentencia Tribunal Ambiental Data Center de GoogleFelipe Ovalle
 
VIDEOS DE APOYO PARA LA CREACION DE UN BLOG
VIDEOS DE APOYO PARA LA CREACION DE UN BLOGVIDEOS DE APOYO PARA LA CREACION DE UN BLOG
VIDEOS DE APOYO PARA LA CREACION DE UN BLOGSamuel709479
 
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
 
Manual de usuario Dongle Zigbee 3.0 Sonoff
Manual de usuario Dongle Zigbee 3.0 SonoffManual de usuario Dongle Zigbee 3.0 Sonoff
Manual de usuario Dongle Zigbee 3.0 SonoffDomotica daVinci
 
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
 
VIDEOS DE APOYO- resúmenes de tecnología
VIDEOS DE APOYO- resúmenes de tecnologíaVIDEOS DE APOYO- resúmenes de tecnología
VIDEOS DE APOYO- resúmenes de tecnologíamarianasinisterra200
 
Es una presentacion de memorias usb para booting
Es una presentacion de memorias usb para bootingEs una presentacion de memorias usb para booting
Es una presentacion de memorias usb para bootingcarlocarrillocacc
 
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHARE
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHAREVIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHARE
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHAREaljitagallego
 
Combinación de correspondencia Sebastián Pérez
Combinación de correspondencia Sebastián PérezCombinación de correspondencia Sebastián Pérez
Combinación de correspondencia Sebastián PérezSebastinPrez67
 
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)

Taller 1 sobre operadores tecnologicos.pdf
Taller 1 sobre operadores tecnologicos.pdfTaller 1 sobre operadores tecnologicos.pdf
Taller 1 sobre operadores tecnologicos.pdf
 
VIDEOS DE APOYO-como subir un documento de slideshare.docx
VIDEOS DE APOYO-como subir un documento de slideshare.docxVIDEOS DE APOYO-como subir un documento de slideshare.docx
VIDEOS DE APOYO-como subir un documento de slideshare.docx
 
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG 9-5
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG  9-5VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG  9-5
VIDEOS DE APOYO, RESUMENES PARA CREAR UN BLOG 9-5
 
Silicon_Valley_RSA_2024_Latam_Immersion.pdf
Silicon_Valley_RSA_2024_Latam_Immersion.pdfSilicon_Valley_RSA_2024_Latam_Immersion.pdf
Silicon_Valley_RSA_2024_Latam_Immersion.pdf
 
Mapa conceptual de las Comunidades virtuales
Mapa conceptual de las Comunidades virtualesMapa conceptual de las Comunidades virtuales
Mapa conceptual de las Comunidades virtuales
 
Abrirse Camino en Open Source: Oportunidades, Contribuciones y Carrera
Abrirse Camino en Open Source: Oportunidades, Contribuciones y CarreraAbrirse Camino en Open Source: Oportunidades, Contribuciones y Carrera
Abrirse Camino en Open Source: Oportunidades, Contribuciones y Carrera
 
COMBINACIONES CORRESPONDENCIA con base de datos excel
COMBINACIONES CORRESPONDENCIA con base de datos excelCOMBINACIONES CORRESPONDENCIA con base de datos excel
COMBINACIONES CORRESPONDENCIA con base de datos excel
 
Presentación paginas web partes principales
Presentación paginas web partes principalesPresentación paginas web partes principales
Presentación paginas web partes principales
 
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEP
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEPVIDEOS DE APOYO PARA TECNOLOGIA LICEO DEP
VIDEOS DE APOYO PARA TECNOLOGIA LICEO DEP
 
Sentencia Tribunal Ambiental Data Center de Google
Sentencia Tribunal Ambiental Data Center de GoogleSentencia Tribunal Ambiental Data Center de Google
Sentencia Tribunal Ambiental Data Center de Google
 
VIDEOS DE APOYO PARA LA CREACION DE UN BLOG
VIDEOS DE APOYO PARA LA CREACION DE UN BLOGVIDEOS DE APOYO PARA LA CREACION DE UN BLOG
VIDEOS DE APOYO PARA LA CREACION DE UN BLOG
 
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
 
Manual de usuario Dongle Zigbee 3.0 Sonoff
Manual de usuario Dongle Zigbee 3.0 SonoffManual de usuario Dongle Zigbee 3.0 Sonoff
Manual de usuario Dongle Zigbee 3.0 Sonoff
 
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...
 
VIDEOS DE APOYO- resúmenes de tecnología
VIDEOS DE APOYO- resúmenes de tecnologíaVIDEOS DE APOYO- resúmenes de tecnología
VIDEOS DE APOYO- resúmenes de tecnología
 
Es una presentacion de memorias usb para booting
Es una presentacion de memorias usb para bootingEs una presentacion de memorias usb para booting
Es una presentacion de memorias usb para booting
 
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHARE
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHAREVIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHARE
VIDEOS DE APOYO PARA CREAR UN BLOG Y COMO SUBIR COSAS A EL DESDE SLIDESHARE
 
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
 
Combinación de correspondencia Sebastián Pérez
Combinación de correspondencia Sebastián PérezCombinación de correspondencia Sebastián Pérez
Combinación de correspondencia Sebastián Pérez
 
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
 

JSDays Desarrolla tu primera API

  • 1. 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 ❏ 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. ❏ Realizar un documento funcional ❏ Realizar el diseño de la API ❏ Realizar una implementación fake ❏ Implementar la API ❏ Validar la API ❏ Generar documentación para developers ❏ Generar casos de prueba (códigos de ejemplo) ❏ Generar los SDks Pasos para desarrollar una API Índice
  • 5. Datos recogidos de google Trend Búsquedas por lenguajes en google Commits por lenguaje en github Datos recogidos de ohloh.net Primeros pasos ¿Qué lenguaje utilizo?
  • 6. ➢ Es una tecnología que está en auge ➢ El lenguaje es Javascript, que todo el mundo conoce. ➢ Es muy fácil desarrollar una API con el módulo express ➢ integración con RAML (proyecto osprey) ¿Por qué node.js? Primeros pasos
  • 7. ➢ Framework javascript para ejecutar código del lado del servidor. Se ejecuta sobre el V8 de Google. Aspectos generales Node.js
  • 8. ➢ Es orientado a eventos y no a threads, basándose en la programación asíncrona. ➢ Levanta un servidor web en local. ➢ Buena gestión de los paquetes con npm. ➢ El módulo express ayuda a desarrollar APIs. Aspectos generales Node.js
  • 9. raml http://raml.org/ url dónde se encuentra toda la documentación de RAML api designer https://anypoint.mulesoft.com url del api designer c9.io https://c9.io/ Entorno para desarrollo test.raml http://api- portal.anypoint.mulesoft.com/clo udsystems/api/notifly/test.raml raml de partida Código ejemplo https://github.com/cloudsystems/ meetup.git Código de ejemplo Recursos Implementación
  • 10. Creamos una APi en el APi portal Api Portal Implementación https://anypoint.mulesoft.com
  • 11. Importamos el RAML Api Designer Implementación http://api-portal.anypoint.mulesoft.com/cloudsystems/api/notifly/test.raml
  • 12. Revisando los servicios Api Designer Implementación http://api-portal.anypoint.mulesoft.com/cloudsystems/api/notifly/test.raml
  • 13. Utilizamos el proyecto Osprey Seguimos los pasos que ponen en Github Generando el esqueleto Implementación http://raml.org/ https://github.com/mulesoft/osprey
  • 14. Instalamos Osprey-cli npm install -g osprey-cli Generamos el esqueleto osprey new --name test -- target test Generando el esqueleto Implementación wget http://api- portal.anypoint.mulesoft.com/cloudsystems/api/n otifly/test.raml Obtenemos el fichero test.raml
  • 15. Instalamos las dependencias npm install (dónde esté package.json) Revisamos el app.js Generando el esqueleto Implementación
  • 16. Ejecutamos la aplicación node app.js Probamos la consola localhost:3000/api/consol e Probando el fake Implementación
  • 17. Probamos la API try it Probando el fake Implementación
  • 18. Nuestros primeros pasos ➢ Instalación de módulos con npm install <módulo> o package.json ➢ Importación de módulos con require ➢ Ejecución del servidor ➢ Módulo express var express = require('express'); var path = require('path'); var osprey = require('osprey'); var app = module.exports = express(); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(express.compress()); app.use(express.logger('dev')); app.set('port', process.env.PORT || 3000); api = osprey.create('/api', app, { ramlFile: path.join(__dirname, '/assets/raml/api.raml'), logLevel: 'debug' // logLevel: off->No logs | info->Show Osprey modules initializations | debug->Show all }); if (!module.parent) { var port = app.get('port'); app.listen(port); console.log('listening on port ' + port); } Generando el esqueleto Implementación
  • 19. GET /api/users { "result": { "info": "OK" }, "data": [ {"name": "Marco", "firstname": "2", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }, "id": "0" } ] } app.get('/api/users', function(req, res) { res.statusCode = 200; res.type('application/json'); res.send({ result: { "result": { "info": "OK"}, "data": { "users": users } }}); }); Resultado Creando un GET Implementación
  • 20. POST /api/users app.post('/api/users', function(req, res) { users.push(req.body); req.body.id=users.length-1; res.statusCode = 201; res.type('application/json'); res.send({ "result": { "info": "user created"}, "data": { "id": users.length-1 } }); }); Resultado { "result": { "info": "user created", "data": {"id": 2} } Creando un POST Implementación
  • 21. PUT /api/users/0 app.put('/api/users/:userid', function(req, res) { var result=users[req.params.userid]; res.statusCode = 200; res.type('application/json'); req.body.id = req.params.userid; users[req.params.userid] = req.body; res.send({"result": {"info": "OK"}, "data": users[req.params.userid] }); }); Resultado {"result": { "info": "OK"}, "data": { "name": "Marco", "firstname": "2", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }, "id": "0"}} Creando un PUT Implementación
  • 22. DELETE /api/users/0 app.delete('/api/users/:userid', function(req, res) { users.splice(req.params.userid,1); res.send({ "result": { "info": "OK" }, "data": users }); }); Resultado {"result": { "info": "OK"}, "data": { "name": "Marco", "firstname": "2", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }, "id": "0"}} Creando un DELETE Implementación
  • 23. ¿Qué es MongoDB? Es una base de datos opensource noSQL orientada a documento. Sus principales características son las siguientes: - Orientada a documento. La información se organiza como colecciones de documentos json. - Los documentos están en formato BSON - Permite indexar por cualquier campo - Permite alta disponibilidad y replicación de la información - Auto - sharding. Permite escalamiento horizontal. - Map Reduce - Permite realizar queries basadas en documentos Conectando a la BBDD Implementación
  • 24. Conectando node con MongoDB Es una base de datos opensource noSQL orientada a documento. Sus principales características son las siguientes: - Orientada a documento. La información se organiza como colecciones de documentos json. - Los documentos están en formato BSON - Permite indexar por cualquier campo - Permite alta disponibilidad y replicación de la información - Auto - sharding. Permite escalamiento horizontal. - Map Reduce - Permite realizar queries basadas en documentos Conectando a la BBDD Implementación
  • 25. Instalando el driver de Mongo. package.json { "name": "test", "version": "0.0.1", "private": true, "dependencies": { "express": "3.4.4", "osprey": "0.1.1", "mongodb":"*" } var MongoClient = require ('mongodb').MongoClient; MongoClient.connect('mongodb://localhost:27017/meetup',function(err,db){ if (err) throw err; }); Conectando a la base de datos. app.js Configurando MongoDB Implementación
  • 26. GET /api/users app.get('/api/users', function(req, res) { var params={}; if (req.params){ params=req.params; } db.collection('users').find(params).toArray(function(er r,users){ if (err)throw err; res.send({ "result": { "info": "OK" }, "data": users }); }); }); Resultado { "result": { "info": "OK" }, "data": [ { "name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }, "_id": "53cee9b7e892d0c91d7ab299" }]} Creando un GET con BBDD Implementación
  • 27. POST /api/users app.post('/api/users', function(req, res) { var user=req.body; db.collection('users').insert(user,function(err,user){ res.send({ "result": { "info": "OK" }, "data": user }); }); }); Resultado { "result": { "info": "OK" }, "data": [ { "name": "Marco", "firstname": "Polo", "lastname": "2", "address": { "descripcion": "blab bla", "number": "2" }, "_id": "53ceee94e657ff1a1f93893c" } ] } Creando un POST con BBDD Implementación
  • 28. PUT /api/users/53cee9c8e892d0c91d7ab29b app.put('/api/users/:userid', function(req, res) { var objectId = new ObjectID(req.params.userid); var user = req.body; db.collection('users').update({_id:objectId},user,function(er r,updated){ res.send({ "result": { "info": "OK" }, "data": updated }); }); }); Resultado { "result": { "info": "OK" }, "data": 0 } Creando un PUT con BBDD Implementación
  • 29. DEL /api/users/53cee9c8e892d0c91d7ab29b app.delete('/api/users/:userid', function(req, res) { var objectId = new ObjectID(req.params.userid); db.collection('users').remove({_id:objectId},function(e rr,user){ res.send({ "result": { "info": "OK" }, "data": user }); }); }); Resultado { "result": { "info": "OK" }, "data": 0 } Creando un DELETE con BBDD Implementación
  • 30. Código: https://github.com/cloudsystems/meetup/tree/master/meetup Colección de pruebas postman: https://www.getpostman.com/collections/771041a6437349596cf2 RAML de ejemplo: http://api-portal.anypoint.mulesoft.com/cloudsystems/api/notifly/test.raml Código de ejemplo Enlaces de interés
  • 31. ➢ Mongoose, mongoose-validate, mongoose-schema-extend: Permite definir esquemas para mongo ➢ Express.router: Permite unificar todas las rutas en un sólo fichero ➢ Express validator: Permite validar parámetros ➢ Errorhandler: Permite manejar los errores de un forma más fácil ➢ Log4js-node: Permite configurar y manejar los logs ➢ Node-schedule: Permite configurar tareas batch Utilidades ➢ ForEver: Permite ejecutar continuamente el script node ➢ Node-supervidor: Permite realizar actualizaciones en caliente Módulos interesantes Algunas cosas más
  • 32. ➢ MongoDB: http://www.mongodb.org/ ➢ RAML: http://raml.org/ ➢ Nodejs: http://nodejs.org/ ➢ IDe para poder desarrollar y ejecutar nuestras pruebas: http://c9.io ➢ API designer: http://api-portal.anypoint.mulesoft.com/raml/api-designer: ➢ Cursos de Mongo con node: https://university.mongodb.com/ Enlaces de interés Enlaces
  • 35. Contacta en: Email: admin@apiaddicts.org Web: http://www.meetup.com/APIAddicts Siguenos en: ➢ Linkedin: ApiAddicts ➢ Twitter: @apiaddicts ➢ Facebook: APIAddicts ➢ Meetup: APIAddicts Contacta