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

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 :
- MongoBD doit être sinon installer MongoDB.
- NodeJS et { NPM ou YARN} doivent être installés sinon installer NodeJS.
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-dashboardVotre 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
