Introduction to Node.JS Express

Preview:

Citation preview

Node.JS - ExpressEueung Mulyana

http://eueung.github.io/js/expressJS CodeLabs | Attribution-ShareAlike CC BY-SA

1 / 21

Agenda

Basics

RESTful APIs

2 / 21

Basics

3 / 21

Example #1

$ node ex-01-expressjs.jsExample app listening at http://:::3000

var express = require('express');var app = express();// ----------------------------------app.get('/', function (req, res) { res.send('Hello World!');});// ----------------------------------var server = app.listen(3000, function () { var host = server.address().address; var port = server.address().port;

console.log('Example app listening at http://%s:%s', host, port);});

 

4 / 21

The app starts a server and listens on port 3000 forconnections. The app responds with “Hello World!” forrequests to the root URL (/) or route. For every otherpath, it will respond with a 404 Not Found.The req (request) and res (response) are the exact sameobjects that Node provides, so you can invoke req.pipe(),req.on('data', callback), and anything else you would dowithout Express involved.

Express vs. http Module

var http = require('http');var server = http.createServer(function(){});

server.listen(3000, function(){ console.log("Listening on port 3000");});

var express = require('express');var app = express();

var server = app.listen(3000, function(){ console.log('Listening on port %d', server.address().port);});

5 / 21

var express = require('express');var app = express();//--------------------------------------------------app.get('/', function (req, res) { console.log("Got a GET request for the homepage"); res.send('Hello GET'); })//--------------------------------------------------app.post('/', function (req, res) { console.log("Got a POST request for the homepage"); res.send('Hello POST'); })//--------------------------------------------------app.delete('/del_user', function (req, res) { console.log("Got a DELETE request for /del_user"); res.send('Hello DELETE'); })//--------------------------------------------------app.get('/list_user', function (req, res) { console.log("Got a GET request for /list_user"); res.send('Page Listing'); })//--------------------------------------------------// This responds a GET request for abcd, abxcd, ab123cd, and so onapp.get('/ab*cd', function(req, res) { console.log("Got a GET request for /ab*cd"); res.send('Page Pattern Match'); })//--------------------------------------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)})

Example #2$> node ex-02.jsExample app listening at http://:::8081Got a GET request for the homepageGot a POST request for the homepageGot a GET request for /list_userGot a DELETE request for /del_userGot a GET request for /ab*cd

6 / 21

7 / 21

$> node ex-03.jsExample app listening at http://:::8081{ first_name: 'Dodol', last_name: 'Garut' }

var express = require('express');var app = express();//-----------------------------------------app.use(express.static('ex-03')); // get '/' langsung//-----------------------------------------app.get('/index-get', function (req, res) { res.sendFile( __dirname + "/ex-03/" + "index-get.html" ); });//-----------------------------------------app.get('/process_get', function (req, res) { response = { first_name:req.query.first_name, last_name:req.query.last_name }; console.log(response); res.end(JSON.stringify(response));});//-----------------------------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)});

Example #3 (GET) 

 

 

8 / 21

Example #3 (POST)

 

 

$> node ex-03-post.jsExample app listening at http://:::8081{ first_name: 'dodol via post', last_name: 'garut jg via post'

var express = require('express');var app = express();var bodyParser = require('body-parser');

// Create application/x-www-form-urlencoded parservar urlencodedParser = bodyParser.urlencoded({ extended: falseapp.use(express.static('ex-03'));//-----------------------------------------------app.get('/index-post', function (req, res) { res.sendFile( __dirname + "/ex-03/" + "index-post.html" );})//-----------------------------------------------app.post('/process_post', urlencodedParser, function (req, res) response = { first_name:req.body.first_name, last_name:req.body.last_name }; console.log(response); res.end(JSON.stringify(response));})//-----------------------------------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)})

9 / 21

index-get.html

<html><body><form action="http://127.0.0.1:8081/process_get" method="GET" First Name: <input type="text" name="first_name"> <br>

Last Name: <input type="text" name="last_name"> <input type="submit" value="Submit"></form></body></html>

index-post.html

<html><body><form action="http://127.0.0.1:8081/process_post" method="POST" First Name: <input type="text" name="first_name"> <br>

Last Name: <input type="text" name="last_name"> <input type="submit" value="Submit"></form></body></html>

10 / 21

Example #4File Uploads

app.post('/file_upload', upload.single('file'), function (req, res) console.log(req.file.originalname); console.log(req.file.path); console.log(req.file.mimetype);

var file = __dirname + "/ex-04/result/" + req.file.originalname; fs.readFile( req.file.path, function (err, data) { fs.writeFile(file, data, function (err) { if( err ){ console.log( err ); } else { response = { message:'File uploaded successfully' console.log( response ); res.end( JSON.stringify( response ) ); }); });});

var express = require('express');var app = express();var fs = require("fs");

var bodyParser = require('body-parser');var multer = require('multer');//--------------------------app.use(express.static('ex-04/public'));app.use(bodyParser.urlencoded({ extended: false }));var upload = multer({ dest: 'ex-04/tmp/'});//--------------------------app.get('/index-upload', function (req, res) { res.sendFile( __dirname + //--------------------------// ...//--------------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)});

11 / 21

Example #4$> node ex-04.jsExample app listening at http://:::8081Drones.pdfex-04\tmp\0c1fd33b722f40f26cb34d35f28f72d1application/pdf{ message: 'File uploaded successfully', filename: 'Drones.pdf' }

<html><head><title>File Uploading Form</title></head><body> <h3>File Upload:</h3> Select a file to upload: <br /> <form action="http://127.0.0.1:8081/file_upload" method="POST" enctype="multipart/form-data"> <input type="file" name="file" size="50" /> <br /> <input type="submit" value="Upload File" /> </form></body></html>

 

12 / 21

Example #5cookie-parser

$> node ex-05.jsExample app listening at http://:::8081Cookies: { Cho: 'Kim', Greet: 'Hello' }Cookies: {}

$> curl http://localhost:8081 --cookie "Cho=Kim;Greet=Hello"Request Received!$> curl http://localhost:8081Request Received!

var express = require('express');var cookieParser = require('cookie-parser');//----------------------------------------var app = express();app.use(cookieParser());//----------------------------------------app.get('/', function(req, res) { console.log("Cookies: ", req.cookies); res.send('Request Received!'); });//----------------------------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)});

13 / 21

RESTful APIs

14 / 21

var express = require('express');var app = express();var fs = require("fs");//------------------// case insensitiveapp.get('/listUsers', function (req, res) { fs.readFile( __dirname + "/" + "ex-06-users.json", 'utf8' console.log( data ); res.end( data ); });});//------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port

console.log("Example app listening at http://%s:%s", host, port)});

Example #6Using Flat JSON File

GET /listusers 

15 / 21

Example #6POST /adduser

var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Example app listening at http://%s:%s", host, port)});

var express = require('express');var app = express();var fs = require("fs");var bodyParser = require('body-parser');//------------------app.use(bodyParser.urlencoded({ extended: true }));app.use(bodyParser.json());//------------------function saveJson (filename,filecontent) { fs.writeFile(filename, filecontent, function(err) { if (err) { return console.error(err); } });}//------------------app.post('/addUser', function (req, res) { fs.readFile( __dirname + "/" + "ex-06-users.json", 'utf8' data = JSON.parse( data ); //console.log(req.body);

data["user" + req.body.id] = {} data["user" + req.body.id].name = req.body.name data["user" + req.body.id].password = req.body.password data["user" + req.body.id].profession = req.body.profession data["user" + req.body.id].id = +req.body.id console.log( data ); res.end( JSON.stringify(data)); saveJson( __dirname + "/" + "ex-06-users.json", JSON.stringify(data) ); });});

16 / 21

17 / 21

var express = require('express');var app = express();var fs = require("fs");// ---------------------app.get('/:id', function (req, res) { fs.readFile( __dirname + "/" + "ex-06-users.json", 'utf8' data = JSON.parse( data ); var user = data["user" + req.params.id] console.log( user ); res.end( JSON.stringify(user)); });});// ---------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Example app listening at http://%s:%s", host, port)});

Example #6GET /:id 

18 / 21

Example #6DELETE /deleteuser 

var express = require('express');var app = express();var fs = require("fs");var bodyParser = require('body-parser');//------------------app.use(bodyParser.urlencoded({ extended: true }));app.use(bodyParser.json());//------------------function saveJson (filename,filecontent) { fs.writeFile(filename, filecontent, function(err) { if (err) { return console.error(err); } });}// ---------------------app.delete('/deleteUser', function (req, res) { fs.readFile( __dirname + "/" + "ex-06-users.json", 'utf8' data = JSON.parse( data ); delete data["user" + req.body.id];

console.log( data ); res.end( JSON.stringify(data)); saveJson( __dirname + "/" + "ex-06-users.json", JSON.stringify(data) ); });});// ---------------------var server = app.listen(8081, function () { var host = server.address().address var port = server.address().port console.log("Example app listening at http://%s:%s", host, port)});

19 / 21

ENDEueung Mulyana

http://eueung.github.io/js/expressJS CodeLabs | Attribution-ShareAlike CC BY-SA

21 / 21