SlideShare a Scribd company logo
1 of 56
Download to read offline
SERVIDOR	API	REST	CON
NODE.JS
ADOLFO	SANZ	DE	DIEGO
OCTUBRE	2013
1	ACERCA	DE
1.1	EL	GUL
El	GUL	es	el	Grupo	de	Usuarios	de	Linux	de	la
UC3M.
Grupo	de	personas	con	inquietudes	en	torno	a	la
informática.
Con	la	idea	común	de	la	utilización	y	promoción	del
Software	Libre.
Quedamos	de	vez	en	cuando	y	organizamos
actividades	sobre	todo	esto.
El	punto	de	unión	es	la	lista	de	correo	que	está
abierta	a	todo	el	mundo.
1.2	¿DÓNDE	ENCONTRARNOS?
Twitter:	http://twitter.com/guluc3m
Lista:	gul@gul.uc3m.es
Ftp:	ftp://ftp.gul.uc3m.es
Web:	http://www.gul.uc3m.es
Podcast:	http://holamundo.gul.es/
Blog:	http://planeta.gul.uc3m.es/
Linkedin:	http://www.linkedin.com/groups?
gid=3451836
1.3	ADOLFO	SANZ	DE	DIEGO
Antiguo	programador	web	JEE
Hoy	en	día:
Profesor	de	FP	de	informática:
Hardware,	Sistemas	Operativos
Redes,	Programación
Formador	Freelance:
Java,	Android
JavaScript,	jQuery
JSF,	Spring,	Hibernate
Groovy	&	Grails
Me	gusta	programar
1.4	HACKALOVER

Para	los	amantes	de	los	hackathones
Meetup:	http://www.meetup.com/HackathonLovers/
Twitter:	http://twitter.com/HackathonLovers
Blog:	http://hackathonlovers.tumblr.com/
LinkedIn:
http://www.linkedin.com/groups/HackathonLovers-6510465
YouTube:
http://www.youtube.com/channel/UCRwSe7jKy62BMvIiNBV1qw
1.5	TWEETS	SENTIMENT

Es	un	analizador	de	tweets	que	extrae
información	semántica	para	conocer	si	el
sentimiento	general	de	los	tweets	de	un
determinado	tema	es	positivo	o	negativo.
Web:	http://tweetssentiment.com/
Twitter:	http://twitter.com/TweetsSentiment
1.6	¿DONDE	ENCONTRARME?
Mi	nick:	asanzdiego
AboutMe:	http://about.me/asanzdiego
GitHub:	http://github.com/asanzdiego
Twitter:	http://twitter.com/asanzdiego
Blog:	http://asanzdiego.blogspot.com.es
LinkedIn:	http://www.linkedin.com/in/asanzdiego
Google+:
http://plus.google.com/+AdolfoSanzDeDiego
1.7	CRÉDITOS
Agradecimientos	a	Carlos	Azustre
(http://twitter.com/carlosazaustre)
Cómo	crear	una	API	REST	usando	Node.JS
http://carlosazaustre.es/blog/como-crear-una-apirest-usando-node-js/
Estas	transparencias	están	hechas	con:
https://github.com/asanzdiego/markdownslides
1.8	LICENCIA
Estas	transparencias	están	bajo	una	licencia:
Creative	Commons	ReconocimientoCompartirIgual	3.0
El	código	de	los	programas	están	bajo	una
licencia:
GPL	3.0
1.9	FUENTES
Transparencias:
SlideShare
Deck	Slides
Reveal	Slides
Plain	HTML
Código:
https://github.com/asanzdiego/curso-api-restfulnodejs-server-2013/tree/master/src
2	APIS	¿PARA	QUÉ?
2.1	APLICACIÓN	ESTÁNDAR
2.2	INTRODUCIMOS	API
2.3	SEPARACIÓN	ROLES
2.4	¿Y	AHORA	QUÉ?
2.5	SERVICIOS	EXTERNOS
2.6	APPS	CLIENTES
2.7	APPS	DE	SERVICIOS
2.8	APPS	MIXTAS
2.9	PLATAFORMA
2.10	¿QUIEN	EXPONE	APIS?
2.11	¿QUIEN	EXPONE	APIS?
2.12	¿QUIEN	EXPONE	APIS?
2.13	EXPONLAS	TÚ
2.14	EXPONLAS	TÚ
2.15	EXPONLAS	TÚ
3	APIS	RESTFUL
3.1	¿QUÉ	ES	REST?
REST	(Representational	State	Transfer)	es	una
técnica	de	arquitectura	de	software	para	sistemas
hipermedia	distribuidos	como	la	World	Wide	Web.
En	REST	una	URL	(Uniform	Resource	Locator)
representa	un	recurso.
Se	puede	acceder	al	recurso	o	modificarlo
mediante	los	métodos	del	protocolo	HTTP:
GET,	POST,	PUT,	DELETE
3.2	EJEMPLO	API
http://myhost.com/talk
GET	>	Devuelve	todas	las	charlas.
POST	>	Crear	una	nueva	charla.
http://myhost.com/talk/123
GET	>	Devuelve	la	charla	con	id=123
PUT	>	Actualiza	la	charla	con	id=123
DELETE	>	Borra	la	charla	con	id=123
3.3	MANEJO	DE	ERRORES
Se	pueden	utilizar	los	errores	del	protocolo
HTTP:
200	Successful
201	Created
202	Accepted
301	Moved	Permanently
400	Bad	Request
401	Unauthorised
402	Payment	Required
403	Forbidden
404	Not	Found
405	Method	Not	Allowed
500	Internal	Server	Error
501	Not	Implemented
3.4	¿POR	QUÉ	REST?
Es	más	sencillo	(tanto	la	API	como	la
implementación).
Es	más	rápido	(peticiones	más	lijeras	que	se
pueden	cachear).
Es	multiformato	(HTML,	XML,	JSON,	etc.).
Se	complementa	muy	bien	con	AJAX.
3.5	REST	VS	RESTFUL
REST	se	refiere	a	un	tipo	de	arquitectura	de
software
Se	utiliza	como	nombre
Se	utiliza	como	por	ejemplo:	success	=	éxito.
Si	un	servicio	web	es	RESTful	indica	que
implementa	dicha	arquitectura.
Se	utiliza	como	adjetivo
Se	utiliza	como	por	ejemplo:	successful	=
éxitoso).
3.6	REST	VS	RESTFUL
A	veces	el	ful	se	confunde	con	full	=	completo.
Y	se	refiere	a	los	servicios	web	RESTfull
Aquellos	que	implementan	una	API	con
todos	los	métodos	del	protócolo	HTTP.

Y	se	refiere	a	los	servicios	web	REST	(sin	el	full)
Aquellos	que	NO	implementan	una	API	con
todos	los	métodos	del	protócolo	HTTP.
4	NODE.JS
4.1	INTRODUCCIÓN
Node.js	permite	programar	en	Javascript	del
lado	del	servidor.
Pensado	para	un	manejo	de	E/S	orientada	a
eventos.
4.2	EJECUCIÓN
Ejecución	concurrente
Muchos	tareas
Pero	NO	paralelo
Una	única	hebra
4.3	¿DÓNDE	USARLO?
Cuando	hay	mucha	E/S
y	por	tanto	mucha	CPU	inactiva	por	tarea.
Y	hay	muchos	clientes
que	compensan	esa	inactividad	de	la	CPU.
Pensado	para	la	creación	de	programas	de	red
altamente	escalables.
4.4	OTROS	CONCEPTOS
npm	http://npmjs.org/:
es	el	gestor	de	paquetes	de	Node.js.
expressjs	http://expressjs.com/:
es	una	librería	para	Node.js	de	desarrollo	web.
mongoosejs	http://mongoosejs.com/:
es	una	librería	para	Node.js	de	modelado	de
objetos	de	MongoDB	http://www.mongodb.org/
4.5	PRIMERO	PASOS
Instalar	Node.js
http://nodejs.org/download/
Instalar	MongoDB
http://docs.mongodb.org/manual/installation/
4.6	ABURRIDO
5	CÓDIGO
5.1	APLAUSOS
5.2	PACKAGE.JSON
Define	las	dependencias	de	nuestro	proyecto.
{
		"name"	:	"api-restful-nodejs-server",
		"version"	:	"0.0.1",
		"dependencies"	:	{
				"express"	:	"3.x",
				"mongoose"	:	"3.6.20"
		}
}
5.3	NPM	INSTALL
Este	comando	instalará	en	la	carpeta
node_modules	las	dependencias	de	nuestro
proyecto.
npm	install
5.4	APP.JS
Es	el	fichero	principal.
El	nombre	es	lo	de	menos.
A	veces	también	se	le	suele	llamar	server.js
Para	ejecutar	una	aplicación	de	Node.js:
node	app.js
5.5	APP.JS
//	modulos	requeridos
var	http,	express,	mongoose,	app,	server	...
//	configuramos	app
app.configure(function	()	{
				//	config...
});
//	importamos	las	rutas
var	routes	=	require('./routes/talkRoute')(app);
//	conectamos	con	la	base	de	datos
mongoose.connect('mongodb://localhost/gul',	function(err,	res)	{
				//	console.log('Connected	to	GUL	MongoDB	Database');
});
//	arrancamos	el	servidor
server.listen(3000,	function()	{
				//	console.log("Server	running	on	http://localhost:3000");
});
5.6	DIRECTORIOS
Puedes	usar	la	estructura	de	directorios	que
quieras.
Yo	he	usado	esta:
models:
routes:
services:
5.7	MODELS
Directorio	con	los	modelos	que	se	van	a	guardar	en
base	de	datos.
Yo	creo	un	fichero	js	para	cada	colección.
5.8	MODELS/TALKMODEL.JS
//	modulos	requeridos
var	mongoose	=	require('mongoose');
var	Schema			=	mongoose.Schema;
//	definimos	el	modelo	'talk'	con	sus	restricciones
//	también	podemos	definir	relaciones	con	otros	modelos
//	aquí	no	se	ha	hecho	por	simplificar
var	talkSchema	=	new	Schema({
				talkName:											{	type:	String,	required:	true	},
				talkDate:											{	type:	Date,			required:	true	},
				talkSpeaker:								{	type:	String,	required:	true	},
				talkSpeakerMail:				{	type:	String,	required:	true,	
							match:	/^w+@[a-zA-Z_]+?.[a-zA-Z]{2,3}$/	},
				talkPoints:									{	type:	Number,	required:	true,	default:0	}
});
//	exportamos	el	modelo
module.exports	=	mongoose.model('Talk',	talkSchema);
5.9	ROUTES
Directorio	con	los	mapeos	de	las	rutas	de	la	API
RESTful.
Aquí	sólo	gestiono	la	'request'	y	el	'response'.
Transformo	la	'request'	en	un	objeto	'options'	y	se
le	paso	a	un	servicio.
Lo	que	devuelva	el	servicio	lo	meto	en	el
'response'.
Yo	creo	un	fichero	js	para	cada	colección.
5.10	ROUTES/TALKROUTE.JS
module.exports	=	function(app)	{
				var	TalkService	=	require('../services/talkService.js');
				var	findTalks	=	function(req,	res)	{
							TalkService.findAllTalks({...});
				};
				var	findTalk	=	function(req,	res)	{
							var	talkId	=	req.params.talkId;
							TalkService.findTalkById({...});
				};
				var	addTalk	=	function(req,	res)	{...};
				var	updateTalk	=	function(req,	res)	{...};
				var	deleteTalk	=	function(req,	res)	{...};
				//	mapeamos	método	y	URL	a	una	función
				app.get(				'/talk',									findTalks);
				app.get(				'/talk/:talkId',	findTalk);
				app.post(			'/talk',									addTalk);
				app.put(				'/talk/:talkId',	updateTalk);
				app.delete(	'/talk/:talkId',	deleteTalk);
}
5.11	SERVICES
Aquí	están	los	servicios	que	acceden	a	base	de
datos.
Aquí	no	hay	ni	request	ni	response.
Las	funciones	reciben	un	objeto	'options'	con	lo	que
necesita.
Normalmente	deben	gestionar	al	menos	un
'onSuccess'	y	un	'onError'.
Hay	funciones	que	además	gestionan	un
'onNotFound'.
Un	servicio	puede	llamar	a	otros	servicios.
Yo	creo	un	fichero	js	para	cada	colección.
5.12	SERVICES/TALKSERVICE.JS
//importamos	el	modelo
var	Talk	=	require('../models/talkModel.js');
var	findAllTalks	=	function(options)	{
				Talk.find(function(error,	talks)	{...});
};
var	findTalkById	=	function(options)	{
				Talk.findById(options.talkId,	function(error,	talk)	{...});
};
var	saveTalk	=	function(options)	{...};
var	findTalkByIdAndUpdate	=	function(options)	{...};
var	findTalkByIdAndRemove	=	function(options)	{...});
//	exportamos	los	servicios
exports.findAllTalks										=	findAllTalks;
exports.findTalkById										=	findTalkById;
exports.saveTalk														=	saveTalk;
exports.findTalkByIdAndUpdate	=	findTalkByIdAndUpdate;
exports.findTalkByIdAndRemove	=	findTalkByIdAndRemove;
6	DEMO
7	¿ALGUNA	PREGUNTA?

More Related Content

Viewers also liked

REST Versioning Architecture with ASP.NET MVC Web API v1.2
REST Versioning Architecture with ASP.NET MVC Web API v1.2REST Versioning Architecture with ASP.NET MVC Web API v1.2
REST Versioning Architecture with ASP.NET MVC Web API v1.2Rodrigo Ezequiel Liberoff V
 
¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?Adolfo Sanz De Diego
 
4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Ebe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeEbe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeJuan Carlos Rubio Pineda
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XMLJuan Carlos Rubio Pineda
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con RESTAlex Puig
 
Construye un backend para tus app móviles con con ASP.NET Web Api
Construye un backend para tus app móviles con con ASP.NET Web ApiConstruye un backend para tus app móviles con con ASP.NET Web Api
Construye un backend para tus app móviles con con ASP.NET Web ApiHernan Guzman
 
Inventando métricas en Social Media
Inventando métricas en Social MediaInventando métricas en Social Media
Inventando métricas en Social MediaAlex Puig
 
Componentes Web y El Framework Polymer
Componentes Web y El Framework PolymerComponentes Web y El Framework Polymer
Componentes Web y El Framework PolymerJavier Vélez Reyes
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web ServicesGeneXus
 

Viewers also liked (20)

REST Versioning Architecture with ASP.NET MVC Web API v1.2
REST Versioning Architecture with ASP.NET MVC Web API v1.2REST Versioning Architecture with ASP.NET MVC Web API v1.2
REST Versioning Architecture with ASP.NET MVC Web API v1.2
 
¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?¿Qué es un hackathon y por qué deberías asistir?
¿Qué es un hackathon y por qué deberías asistir?
 
Introduccion Servicios Web
Introduccion Servicios WebIntroduccion Servicios Web
Introduccion Servicios Web
 
4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML4/9 Curso JEE5, Soa, Web Services, ESB y XML
4/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Ebe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nubeEbe2013: productividad conherramientas en la nube
Ebe2013: productividad conherramientas en la nube
 
1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML1/9 Curso JEE5, Soa, Web Services, ESB y XML
1/9 Curso JEE5, Soa, Web Services, ESB y XML
 
8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML8/9 Curso JEE5, Soa, Web Services, ESB y XML
8/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Servicios web xml
Servicios web xmlServicios web xml
Servicios web xml
 
SOA y Web Services
SOA y Web ServicesSOA y Web Services
SOA y Web Services
 
El Proyecto Polymer
El Proyecto PolymerEl Proyecto Polymer
El Proyecto Polymer
 
7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML7/9 Curso JEE5, Soa, Web Services, ESB y XML
7/9 Curso JEE5, Soa, Web Services, ESB y XML
 
Desarrollando un API con REST
Desarrollando un API con RESTDesarrollando un API con REST
Desarrollando un API con REST
 
Construye un backend para tus app móviles con con ASP.NET Web Api
Construye un backend para tus app móviles con con ASP.NET Web ApiConstruye un backend para tus app móviles con con ASP.NET Web Api
Construye un backend para tus app móviles con con ASP.NET Web Api
 
Inventando métricas en Social Media
Inventando métricas en Social MediaInventando métricas en Social Media
Inventando métricas en Social Media
 
3/9 soa y web services
3/9 soa y web services3/9 soa y web services
3/9 soa y web services
 
Componentes Web y El Framework Polymer
Componentes Web y El Framework PolymerComponentes Web y El Framework Polymer
Componentes Web y El Framework Polymer
 
Empezando con Angular 2
Empezando con Angular 2Empezando con Angular 2
Empezando con Angular 2
 
Introducción a Node.js
Introducción a Node.jsIntroducción a Node.js
Introducción a Node.js
 
144 Rest Web Services
144 Rest Web Services144 Rest Web Services
144 Rest Web Services
 
Web services
Web servicesWeb services
Web services
 

Similar to Servidor API REST con Node.js

Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)
Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)
Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)Ferojo
 
Internet y navegador web
Internet y navegador webInternet y navegador web
Internet y navegador webLupsG
 
Software Libre y su potencial para el Cauca
Software Libre y su potencial para el CaucaSoftware Libre y su potencial para el Cauca
Software Libre y su potencial para el Caucajhvenegas
 
La era digital
La era digitalLa era digital
La era digitalfran sdr
 
Software Libre
Software LibreSoftware Libre
Software Librezahidaa
 
ULS - Software libre
ULS - Software libreULS - Software libre
ULS - Software libreIntComp-ULS
 
Software libre
Software libreSoftware libre
Software librePablo Soto
 

Similar to Servidor API REST con Node.js (20)

Informe actividad 5 podcast
Informe actividad 5 podcastInforme actividad 5 podcast
Informe actividad 5 podcast
 
Internet
InternetInternet
Internet
 
Comunidades de Software Libre
Comunidades de Software LibreComunidades de Software Libre
Comunidades de Software Libre
 
Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)
Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)
Taller GNU/Linux III Encuentro de Sostenibilidad (Granada)
 
Internet y navegador web
Internet y navegador webInternet y navegador web
Internet y navegador web
 
Presentacionpowerpointloslentecno
PresentacionpowerpointloslentecnoPresentacionpowerpointloslentecno
Presentacionpowerpointloslentecno
 
Presentacionpowerpointloslentecno
PresentacionpowerpointloslentecnoPresentacionpowerpointloslentecno
Presentacionpowerpointloslentecno
 
el software libre
el software libreel software libre
el software libre
 
Software Libre y su potencial para el Cauca
Software Libre y su potencial para el CaucaSoftware Libre y su potencial para el Cauca
Software Libre y su potencial para el Cauca
 
De la web 1.0 a 2.1
De la web 1.0 a 2.1De la web 1.0 a 2.1
De la web 1.0 a 2.1
 
La era digital
La era digitalLa era digital
La era digital
 
Software Libre
Software LibreSoftware Libre
Software Libre
 
Redes sociales 901
Redes sociales 901Redes sociales 901
Redes sociales 901
 
Software libre
Software libreSoftware libre
Software libre
 
ULS - Software libre
ULS - Software libreULS - Software libre
ULS - Software libre
 
Oopphp5
Oopphp5Oopphp5
Oopphp5
 
Normal torreon
Normal torreonNormal torreon
Normal torreon
 
Prueba lili y francis
Prueba lili y francisPrueba lili y francis
Prueba lili y francis
 
Prueba lili y francis
Prueba lili y francisPrueba lili y francis
Prueba lili y francis
 
Software libre
Software libreSoftware libre
Software libre
 

More from Adolfo Sanz De Diego

De 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKDe 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKAdolfo Sanz De Diego
 
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumDesarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumAdolfo Sanz De Diego
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterAdolfo Sanz De Diego
 
Codemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreCodemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreAdolfo Sanz De Diego
 
Open Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreOpen Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreAdolfo Sanz De Diego
 
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...Adolfo Sanz De Diego
 
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlNuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlAdolfo Sanz De Diego
 

More from Adolfo Sanz De Diego (20)

Redes
RedesRedes
Redes
 
Computación
ComputaciónComputación
Computación
 
Angular
AngularAngular
Angular
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Java 8
Java 8Java 8
Java 8
 
De 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWKDe 0 a 100 con Bash Shell Scripting y AWK
De 0 a 100 con Bash Shell Scripting y AWK
 
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de EthereumDesarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
Desarrollo de aplicaciones descentralizadas en la Blockchain de Ethereum
 
JavaScript
JavaScriptJavaScript
JavaScript
 
Codemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipsterCodemotion 2017 - Taller de JHipster
Codemotion 2017 - Taller de JHipster
 
Codemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software LibreCodemotion 2017 - La Revolución del Software Libre
Codemotion 2017 - La Revolución del Software Libre
 
Git, Github y Markdown
Git, Github y MarkdownGit, Github y Markdown
Git, Github y Markdown
 
Open Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software LibreOpen Expo 2017 - La Revolución del Software Libre
Open Expo 2017 - La Revolución del Software Libre
 
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
JustiApps #hackTheJustice - Y si quiero desarrollar mi propia app, ¿qué debo ...
 
Codemotion 2016 - Hackathones 101
Codemotion 2016 - Hackathones 101Codemotion 2016 - Hackathones 101
Codemotion 2016 - Hackathones 101
 
Hackeando el #psd2Hackathon
Hackeando el #psd2HackathonHackeando el #psd2Hackathon
Hackeando el #psd2Hackathon
 
Open Expo 2016 - Ética Hacker
Open Expo 2016 - Ética HackerOpen Expo 2016 - Ética Hacker
Open Expo 2016 - Ética Hacker
 
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hlNuestro primer HackLab -We want you for HackthonLovers #wantu4hl
Nuestro primer HackLab -We want you for HackthonLovers #wantu4hl
 
T3chFest - 2016 - Ética Hacker
T3chFest - 2016 - Ética HackerT3chFest - 2016 - Ética Hacker
T3chFest - 2016 - Ética Hacker
 
Git, GitHub y Markdown
Git, GitHub y MarkdownGit, GitHub y Markdown
Git, GitHub y Markdown
 

Servidor API REST con Node.js