MilleZimU	
  
MilleZimU	
  
Créer,	
  Pousser,	
  Lancer	
  	
  
un	
  Serveur	
  RESTful	
  
Le	
  temps	
  d’un	
  Human	
  Talk	
  
LAVAL,	
  le	
  10	
  Mars	
  2015	
  
	
  
Anthony	
  FAUCOGNEY	
  
Fondateur	
  Startup	
  MilleZimU	
  
	
  
anthony.faucogney@millezimu.fr	
  
@afaucogney	
  
MilleZimU	
  
Prérequis	
  
§  InstallaRon	
  de	
  la	
  toolbox	
  
§  GIT	
  
§  CLI	
  Heroku	
  
§  StrongLoop	
  
§  CLI	
  Mongo	
  (OpRonnel)	
  
§  Compte	
  
§  Heroku	
  
§  MongoLab	
  (base	
  mongo	
  créée)	
  
MilleZimU	
  
Contenu	
  
§  Un	
  serveur	
  RESTFul	
  
§  NodeJS	
  
§  100%	
  RESTful	
  
§  Hébergé	
  sur	
  Heroku	
  
§  Avec	
  une	
  base	
  MongoDB	
  sur	
  MongoLab	
  
§  De	
  l’authenRficaRon	
  (donc	
  des	
  droits	
  d'accès)	
  
§  Un	
  Modèle	
  	
  
§  Talk	
  
§  Talker	
  
§  Des	
  RelaRons	
  entre	
  modèles	
  
§  Une	
  interface	
  de	
  test	
  pour	
  l’API	
  
MilleZimU	
  
NodeJS	
  
MilleZimU	
  
MongoDB	
  
MilleZimU	
  
LoopBack	
  
MilleZimU	
  
Loopback.io	
  
§  CréaRon	
  de	
  l'App	
  
§  slc	
  loopback	
  
§  Une	
  App	
  
§  slc	
  loopback:model	
  
§  Un	
  modèle	
  
§  Talk	
  
§  Des	
  propriétés	
  
§  Name	
  (R)	
  
§  Date	
  (R)	
  
§  Abstract	
  (R)	
  
MilleZimU	
  
Loopback	
  Explorer	
  
MilleZimU	
  
Loopback	
  Explorer	
  
§  Jouer/Tester	
  son	
  API	
  
§  npm	
  i	
  	
  -­‐-­‐save	
  loopback-­‐explorer	
  
MilleZimU	
  
On	
  ajoute	
  un	
  Model	
  
§  Talker	
  dérivé	
  de	
  User	
  
§  slc	
  loopback:model	
  
§  Un	
  modèle	
  
§  Talker	
  
§  Pas	
  de	
  propriété	
  supplémentaire	
  
§  Idem	
  User	
  
MilleZimU	
  
On	
  gére	
  les	
  Droits	
  
§  Pour	
  Talkers	
  
§  slc	
  loopback:acl	
  
§  Droit	
  en	
  Lecture	
  
§  Tout	
  URlisateur	
  AuthenRfié	
  
§  Pour	
  User	
  
§  model-­‐config.js	
  
§  Private	
  sur	
  l’API	
  REST	
  
MilleZimU	
  
§  On	
  installe	
  un	
  connecteur	
  MongoDB	
  :	
  
§  npm	
  i	
  -­‐-­‐save	
  loopback-­‐connector-­‐mongodb	
  
§  On	
  créer	
  un	
  dataSource	
  :	
  
§  slc	
  loopback:datasource	
  
§  On	
  le	
  configure	
  :	
  
"humantalk":	
  {	
  
	
  	
  "name":	
  "humantalk",	
  
	
  	
  "url":	
  "mongodb://anthony:xxxxx@ds037571.mongolab.com:37571/
humantalk",	
  
	
  	
  "connector":	
  "mongodb"	
  
}	
  
MongoDB,	
  mare	
  de...	
  	
  
MilleZimU	
  
Connexion	
  des	
  modèles	
  a	
  MongoDB	
  
model-­‐config.js	
  
	
  
"Talk":	
  {	
  
	
  	
  "dataSource":	
  "humantalk",	
  
	
  	
  "public":	
  true	
  
},	
  
"Talker":	
  {	
  
	
  	
  "dataSource":	
  "humantalk",	
  
	
  	
  "public":	
  true	
  
}	
  
MilleZimU	
  
On	
  ajoute	
  une	
  RelaRon	
  
§  slc	
  loopback:relaRon	
  
Talkers	
  HasMany	
  Talks	
  
	
  
model-­‐config.js	
  
"talks":	
  {	
  
	
  	
  "type":	
  "hasMany",	
  
	
  	
  "model":	
  "Talk",	
  
	
  	
  "foreignKey":	
  "talkerId"	
  
}	
  
MilleZimU	
  
Do	
  You	
  Git	
  ?	
  
§  git	
  init	
  
§  git	
  add	
  .	
  
§  git	
  rm	
  –r	
  node_modules	
  
§  git	
  commit	
  –am”ca	
  y	
  est,	
  on	
  commence”	
  
MilleZimU	
  
Un	
  Heroku	
  Dyno	
  à	
  la	
  Volée	
  !!!	
  
§  On	
  se	
  logue	
  
§  heroku	
  login	
  
§  CréaRon	
  d’un	
  App	
  
§  	
  heroku	
  create	
  humantalklaval	
  
§  On	
  pousse	
  fort	
  !	
  
§  git	
  push	
  heroku	
  master	
  
§  On	
  ajoute	
  une	
  unité	
  de	
  calcul	
  :	
  dyno	
  
§  heroku	
  ps	
  
§  heroku	
  ps:scale	
  web=1	
  
MilleZimU	
  
Un	
  Procfile	
  pour	
  lancer	
  le	
  fichier	
  
§  Procfile	
  
§  web:	
  node	
  ./server/server	
  
§  git	
  add	
  Procfile	
  
§  git	
  commit	
  –am	
  “add	
  procfile”	
  
§  git	
  push	
  heroku	
  master	
  
§  heroku	
  open	
  
MilleZimU	
  
Ajout	
  d’un	
  Talker	
  
{	
  
	
  "email":	
  "anthony.faucogney@millezimu.fr",	
  
	
  	
  "password":"human"	
  
}	
  
MilleZimU	
  
Ajout	
  d’un	
  Talk	
  
{	
  
	
  	
  "name":	
  "RESTMD10",	
  
	
  	
  "date":	
  "2015-­‐02-­‐27",	
  
	
  	
  "abstract":	
  "Blabla",	
  
	
  	
  "talkerId":	
  “….."	
  
}	
  
MilleZimU	
  
RécupéraRon	
  des	
  Talks	
  d’un	
  Talker	
  –	
  
Protégé	
  par	
  les	
  droits	
  
MilleZimU	
  
Heroku	
  
MilleZimU	
  
MongoLab	
  
MilleZimU	
  
Les	
  Sources	
  
§  NodeJS	
  htps://nodejs.org/	
  	
  
§  LoopBack	
  htp://loopback.io/	
  	
  
§  MongoDB	
  htp://www.mongodb.org/	
  	
  
§  MongoLab	
  htps://mongolab.com/	
  	
  
§  Heroku	
  htps://www.heroku.com/home	
  	
  

Créer, Pousser et Lancer un serveur RESTful en 10 min.

  • 1.
    MilleZimU   MilleZimU   Créer,  Pousser,  Lancer     un  Serveur  RESTful   Le  temps  d’un  Human  Talk   LAVAL,  le  10  Mars  2015     Anthony  FAUCOGNEY   Fondateur  Startup  MilleZimU     anthony.faucogney@millezimu.fr   @afaucogney  
  • 2.
    MilleZimU   Prérequis   § InstallaRon  de  la  toolbox   §  GIT   §  CLI  Heroku   §  StrongLoop   §  CLI  Mongo  (OpRonnel)   §  Compte   §  Heroku   §  MongoLab  (base  mongo  créée)  
  • 3.
    MilleZimU   Contenu   § Un  serveur  RESTFul   §  NodeJS   §  100%  RESTful   §  Hébergé  sur  Heroku   §  Avec  une  base  MongoDB  sur  MongoLab   §  De  l’authenRficaRon  (donc  des  droits  d'accès)   §  Un  Modèle     §  Talk   §  Talker   §  Des  RelaRons  entre  modèles   §  Une  interface  de  test  pour  l’API  
  • 4.
  • 5.
  • 6.
  • 7.
    MilleZimU   Loopback.io   § CréaRon  de  l'App   §  slc  loopback   §  Une  App   §  slc  loopback:model   §  Un  modèle   §  Talk   §  Des  propriétés   §  Name  (R)   §  Date  (R)   §  Abstract  (R)  
  • 8.
  • 9.
    MilleZimU   Loopback  Explorer   §  Jouer/Tester  son  API   §  npm  i    -­‐-­‐save  loopback-­‐explorer  
  • 10.
    MilleZimU   On  ajoute  un  Model   §  Talker  dérivé  de  User   §  slc  loopback:model   §  Un  modèle   §  Talker   §  Pas  de  propriété  supplémentaire   §  Idem  User  
  • 11.
    MilleZimU   On  gére  les  Droits   §  Pour  Talkers   §  slc  loopback:acl   §  Droit  en  Lecture   §  Tout  URlisateur  AuthenRfié   §  Pour  User   §  model-­‐config.js   §  Private  sur  l’API  REST  
  • 12.
    MilleZimU   §  On  installe  un  connecteur  MongoDB  :   §  npm  i  -­‐-­‐save  loopback-­‐connector-­‐mongodb   §  On  créer  un  dataSource  :   §  slc  loopback:datasource   §  On  le  configure  :   "humantalk":  {      "name":  "humantalk",      "url":  "mongodb://anthony:xxxxx@ds037571.mongolab.com:37571/ humantalk",      "connector":  "mongodb"   }   MongoDB,  mare  de...    
  • 13.
    MilleZimU   Connexion  des  modèles  a  MongoDB   model-­‐config.js     "Talk":  {      "dataSource":  "humantalk",      "public":  true   },   "Talker":  {      "dataSource":  "humantalk",      "public":  true   }  
  • 14.
    MilleZimU   On  ajoute  une  RelaRon   §  slc  loopback:relaRon   Talkers  HasMany  Talks     model-­‐config.js   "talks":  {      "type":  "hasMany",      "model":  "Talk",      "foreignKey":  "talkerId"   }  
  • 15.
    MilleZimU   Do  You  Git  ?   §  git  init   §  git  add  .   §  git  rm  –r  node_modules   §  git  commit  –am”ca  y  est,  on  commence”  
  • 16.
    MilleZimU   Un  Heroku  Dyno  à  la  Volée  !!!   §  On  se  logue   §  heroku  login   §  CréaRon  d’un  App   §   heroku  create  humantalklaval   §  On  pousse  fort  !   §  git  push  heroku  master   §  On  ajoute  une  unité  de  calcul  :  dyno   §  heroku  ps   §  heroku  ps:scale  web=1  
  • 17.
    MilleZimU   Un  Procfile  pour  lancer  le  fichier   §  Procfile   §  web:  node  ./server/server   §  git  add  Procfile   §  git  commit  –am  “add  procfile”   §  git  push  heroku  master   §  heroku  open  
  • 18.
    MilleZimU   Ajout  d’un  Talker   {    "email":  "anthony.faucogney@millezimu.fr",      "password":"human"   }  
  • 19.
    MilleZimU   Ajout  d’un  Talk   {      "name":  "RESTMD10",      "date":  "2015-­‐02-­‐27",      "abstract":  "Blabla",      "talkerId":  “….."   }  
  • 20.
    MilleZimU   RécupéraRon  des  Talks  d’un  Talker  –   Protégé  par  les  droits  
  • 21.
  • 22.
  • 23.
    MilleZimU   Les  Sources   §  NodeJS  htps://nodejs.org/     §  LoopBack  htp://loopback.io/     §  MongoDB  htp://www.mongodb.org/     §  MongoLab  htps://mongolab.com/     §  Heroku  htps://www.heroku.com/home