Mise en place et Configuration de Parse (Parse-server & Parse-dashboard)

Stan Sarr
Stan Sarr
Aug 8, 2017 · 5 min read

Ce post est consacrée à la mise en place et l’utilisation de Parse: Parse-Server et Parse-Dashboard.

Qu’est-ce que Parse-Server ?

Parse-server est un projet open source, une solution BaaS (Backend as a Service). Pour faire plus simple c’est un serveur backend, qui permet aux développeurs de se concentrer sur le développement de la partie frontend Web, iOS, Android.

Un peu d’histoire :

Fort de son succès, parse.com est racheté par Facebook. Deux ans plus tard, Facebook prend la décision de fermer parse.com, car un BaaS ne fait pas partie de leur stratégie de développement. Face à cette décision, l’équipe de parse.com décide de se tourner vers l’open source (logiciel libre de droit) et d’inviter les centaines de milliers d’utilisateurs de parse.com à migrer vers parse-server.

Fonctionnalités et Stack :

Parse est très stable, développé en Nodejs et MongoDB comme base de données, avec plusieurs fonctionnalités

  • gestion d’utilisateurs : Parse permet de créer, d’authentifier les utilisateurs ou de les relier à d’autres services tiers comme Google, Facebook ou Twitter, pour les plus populaires;
  • le contrôle d’accès (ACL) : Parse utilise ACL comme contrôleur d’accès aux objets par les utilisateurs.
  • live query (requête en temps réel) : Parse permet aussi de recevoir toutes les modifications au niveau de la base de données en temps réel. Avec cette fonctionnalité on peut mettre en place un système de classement en temps réel ou être notifié après la connexion ou la déconnexion de chaque utilisateur etc. Il est possible d’intégrer des solutions pub/sub à Parse, comme Redis ou RabbitMQ.
  • SDK : Parse dispose d’un SDK pour les langages les plus populaires, comme iOS, Android, NodeJs, PHP, React-Native etc.
  • fonctions personnalisés : Parse permet de créer des fonctions personnalisés écrites en NodeJs. Elle fonctionne comme un contrôleur NodeJs, elle reçoit une requête, la traite et renvoient une réponse.
  • Plus de fonctionnalités : Visiter la documentation

Installation & Presrequis :

yarn init

MacBook-Pro-de-Stan:server StanSARR$ yarn inityarn init v0.19.1question name (server): StanParseServerquestion version (1.0.0):question description: Parse server for IOS — Web — Android APPquestion entry point (index.js):question repository url ([object Object]): https://github.com/StanSarr/parse-server.gitquestion author: Stan SARRquestion license (MIT):success Saved package.json✨ Done in 245.01s.

Le fichier package.json est créé maintenant il faut installer Express (framework NodeJs pour construire notre serveur), Parse-server et Parse-dashboard

yarn add express parse-server parse-dashboard

Votre package.json doit ressembler à ça:

{
"name": "ParseServer",
"version": "1.0.0",
"description": "Parse server for IOS - Web - Android APP ",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test yet \""
},
"repository": "https://github.com/StanSarr/parse-server.git",
"author": "Stan SARR",
"license": "MIT",
"dependencies": {
"express": "^4.15.3",
"parse-dashboard": "^1.1.0",
"parse-server": "^2.5.3"
}
}

Vous allez créer votre fichier d’entrée index.js comme indiqué dans le package.json. Désormais vous allez pouvoir mettre en place votre Parse-Server avec Express

/**
* Created by StanSARR on 01/02/2017.
*
*/

const express = require('express');
const ParseServer = require('parse-server').ParseServer;
const path = require('path');

// Configuration de notre server

const SERVER_PORT = process.env.PORT || 8080;
const SERVER_HOST = process.env.HOST || 'localhost';
const APP_ID = process.env.APP_ID || 'first-parse-server-2017-07';
//Ceci doit rester secret
const MASTER_KEY = process.env.MASTER_KEY || 'F23xUQdRmQLQwxV5N6a74kqF8aPqIM9F';
const DATABASE_URI = process.env.DATABASE_URI || 'mongodb://localhost:27017/first-parse-server-2017-07';
const IS_DEVELOPMENT = process.env.NODE_ENV !== 'production';
const DASHBOARD_AUTH = process.env.DASHBOARD_AUTH || 'parse:server';

const app = express();

//Configuration de parse Server
const parseServerAPI = new ParseServer({
databaseURI: DATABASE_URI,
cloud: path.resolve(__dirname, 'cloud.js'),
appId: APP_ID,
masterKey: MASTER_KEY,
serverURL: `http://${SERVER_HOST}:${SERVER_PORT}/parse`
});


app.get("/", function (req, res) {
res.end("IS_DEVELOPMENT => " + IS_DEVELOPMENT);
});

app.use('/parse', parseServerAPI);

app.listen(SERVER_PORT, () => console.log(
`Notre serveur tourne en mode ${process.env.NODE_ENV || 'development'} sur http://localhost:${SERVER_PORT}`
));

Pour lancer notre le serveur il faudra utiliser nodemon qui est un service de redémarrage automatique, il relance le serveur après chaque modification de ce dernier, cela évitera de le redémarrer manuellement après chaque modification.

Teste de Parse-server

Pour tester le Parse-server API je conseille d’utiliser utiliser POSTMAN, qui est assez intuitif et il est un des clients API les plus populaires. Il faut ajouter l’APP_ID dans le header de chaque requête envoyée sous le nom de X-Parse-Application-Idpour éviter d’avoir une réponse {“error”:”unauthorized”}.

La création d’un utilisateur se fait par une requête POST avec les informations obligatoires tels le username, email et password. Le serveur retourne une réponse avec l’id de l’object user et la date de création de l’objet:

{
“objectId”: “5ktOnO9d2D”,
“createdAt”: “2017–08–02T01:48:59.646Z”
}

Mettre en place ParseDashboard

Pour faire simple Parse-dashboard est un back office qui permet de gérer le Parse-server via une interface graphique. Parse-dashboard ne sera disponible qu’en développement, avec une authentification pour accéder aux données du serveur Parse. Il est possible d’avoir plusieurs applications dans le Parse-dashboard

if(IS_DEVELOPMENT) {
let users;
if (DASHBOARD_AUTH) {
const [user, pass] = DASHBOARD_AUTH.split(':');
users = [{user, pass}];
}
const dashboard = ParseDashboard({
apps: [{
serverURL: '/parse',
appId: APP_ID,
masterKey: MASTER_KEY,
appName: 'PREMIER-PARSE-SERVER',
}],
users,
}, IS_DEVELOPMENT);
app.use("/dashboard", dashboard);
}

DASHBOARD_AUTH est le username:password du Parse-dashboard dans notre cas comme indiqué dans la configuration des constantes username = parse et password = server

Après la connexion, l’ accès aux données et fonctionnalités du Parse-server est enfin possible.

Conclusion

Félicitations ! L’ installation et le lancement de Parse-server sont réussis, ainsi que l’ajout un dashboard avec Parse-dashboard. Le prochain post montre comment utiliser Parse-Server avec React-Native, en utilisant le maximum de fonctionnalités.

N’hésitez pas à commenter ou me signaler toute information qui vous semble incorrect

Thanks to Greg Jeanneau

Stan Sarr

Written by

Stan Sarr

Remote Dev | Cofounder & former CTO @ Koober (WE'RE HIRING) | React Native / React / NodeJs Developer — btw Typescript is awesome

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade