advertisement

Node js for Mobile App

50 %
50 %
advertisement
Information about Node js for Mobile App
Education

Published on March 10, 2014

Author: HabibMAALEM

Source: slideshare.net

advertisement

NodeJS for Mobile Apps Habib MAALEM

Sommaire 1. C’est quoi NodeJS ? 2. Que fait NodeJS ? 3. Pourquoi NodeJS ? 4. Modules 5. Cas d’utilisation 6. Restful API 7. CRUD 8. SDK 9. Le protocole OAuth

Habib MAALEM Développeur Front End @AllégorieTV LinkedIn dz.linkedin.com/in/habibmaalem Twitter twitter.com/HabibMAALEM

NodeJS ?? C’est quoi NodeJS Que fait NodeJS Pourquoi NodeJS Cas d’utilisation

NodeJS est ... 1. Projet open source 2. Créé le 19 février 2009 par Ryan Dahl 3. Ecrit en C/C++ 4. Basé sur le Moteur Javascript V8 Github: https://github. com/joyent/node

Que fait NodeJS ? 1. NodeJS est un serveur 2. Programmation non bloquante (Callbacks) 3. Programmation Événementiel

Un serveur var https = require('https'); https.createServer(function (req, res) { res.writeHead(200, {'Content-Type':'text/plain'}); res.end('Hello Worldn'); }).listen(3000, '127.0.0.1'); console.log('Server running at http://127.0.0.1:3000/');

Programmation non bloquante // Bloquant var fichierA = lireFichier(’FichierA.txt’); console.log(’Fichier A’); var fichierB = lireFichier(’FichierB.txt’); console.log(’Fichier B’); ---------------------------------------------------------------------------------- // Non Bloquant var fichierA = lireFichier(’FichierA.txt’); console.log(’Fichier A’); var fichierB = lireFichier(’FichierB.txt’); console.log(’Fichier B’); Fichier A, Fichier B Fichier B, Fichier A

Programmation Événementiel * Node est basé sur un modèle d’ événement. Tout est basé sur des messages

“single-thread event loop” Analogie du roi Le roi ordonne à ses messagers, qui reviennent dès qu'ils le peuvent, et le roi traite les réponses au fur et à mesure, une à la fois. Pas pratiques pour les tâches lourdes

“single-thread event loop”

“single-thread event loop”

“single-thread event loop”

Les Modules 1. NPM: Node Packaged Module 2. Plus de 62 000 modules 3. Une installation simple et facile

Les Modules 1. Don't Repeat Yourself 2. Don't Reinvent the Wheel 3. Learn 2 Search ‘npm install -g grunt’

Node Packaged Modules

Cas d’utilisation NodeJS 1. Applications Web. 2. Applications CLI. 3. Applications Réseaux. 4. Jeux en ligne. 5. Outils de collaboration. 6. Messagerie instantanée 7. Réseaux sociaux 8. Outils de traduction en temps réel 9. API

Qui utilisent NodeJS LinkedIn eBay Walmart

RESTful API ? REST: Representational State Transfer API: Application Programming Interface ‘GET’ ‘PUT’ ‘POST’ ‘DELETE’

RESTful API ? Méthode HTTP Étape CRUD POST Create GET Read PUT Update DELETE Delete

RESTful API ? var express = require('express'); var app = express(); app.get('/annonces', function(req, res) { res.send([{name: 'annonce1'}, {name: ’annonce2’}]); }); app.get('/annonces/:id', function(req, res) { res.send({ id:req.params.id, name: ‘Titre’, description: ‘Description’}); }); app.listen(3000); console.log('Listening on port 3000...');

RESTful API ? Méthode HTTP /annonces/ /annonces/:id POST Ajout d’une annonce ----- GET Liste des annonces Détail d’une annonce PUT ----- Modification d’une annonce DELETE ----- Suppression d’une annonce

RESTful API ? La notion de service RESTful est très normée, et quelques règles doivent être respectées pour se réclamer RESTful: 1. Le service permet de manipuler une collection d’entités. 2. Les méthodes POST/GET/PUT/DELETE sont implémentées pour manipuler la collection et/ou les entités, sur le modèle du CRUD. 3. Les méthodes PUT et DELETE sont « idempotentes », ce qui signifie qu’effectuer plusieurs fois la même requête aura le même effet que de l’exécuter une seule fois. 4. La méthode GET est « sûre », ce qui signifie qu’elle ne modifie pas l’état du serveur ni les données (à l’inverse de POST/PUT/DELETE).

Utiliser les bons codes de statut HTTP Code Message Description 200 OK Le code de statut par défaut en cas de succès. Il sera en général accompagné d’un corps de réponse en JSON 400 Bad request Le code d’erreur générique dans le cas d’informations invalides fournis au service dans la requête (format de données invalide par exemple 404 Not Found Code d’erreur typiquement retourné dans le cas d’une URI d’ entité (en PUT ou GET) qui n’existe pas 405 Method Not Allowed Retourné lorsque l’utilisateur effectue un appel à une URL ne supportant pas la méthode demandée

Utiliser les bons codes de statut HTTP Code Message Description 406 Not Acceptable Ce code sera retourné lorsque la requête contient des entêtes qui nous semblent incompatibles avec le fonctionnement du service, par exemple si dans l’entête « Accept » on ne trouve pas « application/json », ça signifie que la requête déclare explicitement ne pas accepter ce format, et on n’est donc pas en mesure de communiquer avec ce client 500 Server Error Ce sera le code d’erreur par défaut, celui qu’on ne souhaite jamais retourner car il s’agit d’une erreur « non traitée »

Bonnes pratiques 1. Fournir un SDK 2. Fouir l’optionnel et le paramétrable, rendre obligatoire est explicite 3. Aucune informations essentiels dans les entêtes 4. Paramètres génériques, valable sur toute l’API 5. Numéroter les erreurs avec un identifiant unique à tous vos projets 6. Penser au cache 7. Utiliser un sous domaine distinct pour l’API

SDK : Kit de développement

Software Development Kit // Une simple interface de consommation en JAVA public class SehhaAPI { public String getAuthorizationUrl() {...} public boolean authorizeAndAcquireTokens(String code) {...} private void refreshToken() throws Exception {...} private boolean getNewAccessToken(boolean refreshing) {...} private String sehhaRequest(String requestURL) {...} }

Le protocole OAuth OAuth permet aux utilisateurs de donner, à un site/application « consommateur », l'accès à des informations personnelles provenant d'un site/application « fournisseur » de service ou de données. ceci tout en protégeant le pseudonyme et le mot de passe des utilisateurs.

Le protocole OAuth OAuth 2 fournit plusieurs type d’accès 1. Authorization Code pour les application web 2. Password pour un accès avec Username/Password 3. Client credentials pour application 4. Implicit pour les application mobile et les application basé navigateur

Le protocole OAuth npm install oauth2orize npm install passport // create OAuth 2.0 server var https = require('https'); var server = oauth2orize.createServer(); Implémenter les étape du protocole OAuth server.serializeClient(...); server.deserializeClient(...); server.grant(...); server.exchange(...);

Le protocole OAuth var BasicStrategy = require('passport-http').BasicStrategy; var ClientPasswordStrategy = require('passport-oauth2-client-password').Strategy; passport.use(new ClientPasswordStrategy( function(clientId, clientSecret, done) { clients.findByClientId(clientId, function(err, client) { if (err) { return done(err); } if (!client) { return done(null, false); } if (client.clientSecret != clientSecret) { return done(null, false); } return done(null, client); }); } ));

Merci

Questions

Add a comment

Related presentations

Related pages

Should I use Go or Node.js for a mobile app backend? - Quora

I'm going to build a RESTful JSON API as a backend for a mobile app, it is going to access a MongoDB database, a search API (ElasticSearch), handle image ...
Read more

Build Mobile Apps with JavaScript and the Node.js Ecosystem

In this article, we'll discuss the current state of bringing Node.js to mobile, the benefits that Node.js would bring on mobile and a new ...
Read more

Node.js for iOS · GitHub - How people build software ...

Node.app is a low-footprint, Node.js-compatible JavaScript API for mobile apps.
Read more

Nodejs Mobile Apps - Hire JavaScript Programmers - Node.js ...

iPhone & Android Mobile Apps Using Node.js HTML5 and Node.js complement each other in developing data-intensive and high performance mobile apps.
Read more

Progress update: Node.js SDK for Azure App Service Mobile ...

Back in September, we announced the availability of the first alpha release for the Node.js SDK for Azure App Service Mobile Apps. This blog ...
Read more

Developing mobile apps with Node.js and MongoDB, Part 1: A ...

The Extreme Blue team from the IBM lab in RTP, NC, was challenged to develop an entire backend in Node.js for IBM Passes. The ...
Read more

How to use the Azure Mobile Apps Node.js SDK

Learn how to work with the Node.js backend server SDK for Azure App Service Mobile Apps.
Read more

Developing mobile apps with Node.js and MongoDB, Part 2 ...

In this article, we share lessons we learned in the process of developing a RESTful backend application using Node.js and MongoDB.
Read more

Our First Node.js App: Backbone on the Client and Server ...

Our First Node.js App: Backbone on the Client and Server. ... Also, just noticed that your mobile app suffers from the dreaded “iOS 6 bug”, ...
Read more

Node.js

Node.js' package ecosystem, npm, is the largest ecosystem of open source libraries in the world. Important security upgrades for recent OpenSSL ...
Read more