Create Server Project
Create LearnExpressJSRestAPIWithRealApps folder and select to this folder in Visual Studio Code
Install Express.JS
Use the following command to install Express.JS:
npm install express --save
npm install body-parser --save
npm install cookie-parser --save
npm install multer --save
Create Rest API
Create a new folder named api inside the server project. Create demo.api.js file inside api folder contains Rest APIs provides application/json data for the client
var DemoAPI = {
findAll: function (request, response) {
response.setHeader('Content-Type', 'application/json');
var products = [
{
id: 'p01',
name: 'name 1',
price: 20
},
{
id: 'p02',
name: 'name 2',
price: 21
},
{
id: 'p03',
name: 'name 3',
price: 22
}
];
response.json(products);
}
};
module.exports = DemoAPI;
Create Rest API Routing
Inside the api folder create a new file named index.js. This file will hold all the routes needed for rest api in server.
var express = require('express');
var router = express.Router();
var DemoAPI = require('./demo.api');
router.get('/demo/findAll', DemoAPI.findAll);
module.exports = router;
Create Rest API Server
At the root of server project, create a file named server.js. This will be the entry point into node application. This will start the server and listen on a local port
var express = require('express');
var app = express();
app.use('/api', require('./api/index'));
var server = app.listen(9090, function () {
var host = server.address().address;
var port = server.address().port;
console.log("Server listening at http://%s:%s", host, port)
});
Structure of Server Project
Test Rest API Server
At the root of server project run command: node server.js
Access Rest API use the following url: http://localhost:9090/api/demo/findAll
Output
[
{"id":"p01","name":"name 1","price":20},
{"id":"p02","name":"name 2","price":21},
{"id":"p03","name":"name 3","price":22}
]
Create Client Project
Create LearnExpressJSRestAPIWithRealApps_Client folder and select to this folder in Visual Studio Code
Install Modules
Use the following command to install http module
npm install http --save
Create Demo Rest API Client
Create a new folder named api inside the client folder. Create demo.api.js file inside api folder contains method call Rest API from server
var http = require('http');
var BASE_URL = 'http://localhost:9090/api/';
var DemoAPIClient = {
findAll: function (callback) {
return http.get(BASE_URL + 'demo/findAll', function (response) {
var str = '';
response.on('data', function (chunk) {
str += chunk;
});
response.on('end', function () {
callback({
status: response.statusCode,
body: JSON.parse(str)
});
});
response.on('error', function (error) {
callback({
status: response.statusCode,
error: error.message
});
});
}).end();
}
};
module.exports = DemoAPIClient;
Structure of Client Project
Test Client Project
At the root of client project, create a file named client.js. This will call Rest API and display results
var DemoAPIClient = require('./api/demo.api');
DemoAPIClient.findAll(function (result) {
if (result.error) {
console.log(result.error)
} else {
console.log('Status: ' + result.status);
console.log('Products List');
console.log('Size: ' + result.body.length);
for (var i = 0; i < result.body.length; i++) {
console.log('Id: ' + result.body[i].id);
console.log('Name: ' + result.body[i].name);
console.log('Price: ' + result.body[i].price);
console.log('===========================');
}
}
});
Output
Status: 200
Products List
Size: 3
Id: p01
Name: name 1
Price: 20
===========================
Id: p02
Name: name 2
Price: 21
===========================
Id: p03
Name: name 3
Price: 22
===========================