Create a Node.js REST API project

Summary

This post demonstrates how to create a Node.JS REST API Project.

Project Scaffolding

mkdir eaxapp
cd eaxapp

Create a basic Node.js application:

npm init -y

This will create a basic scaffolding:

Wrote to /Users/syed263/Downloads/eaxapp/package.json:

{
  "name": "eaxapp",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC"
}

Install Express Server

npm install express

Nodemon is an optional package (installed globally) which automatically restarts the server after saving server-side code changes. Go ahead and install Nodemon using npm install -g nodemon

sudo npm install nodemon

Create a new index.js file:

const express = require('express');
const app = express();
const path = require('path');
const router = express.Router();

app.use(express.static(__dirname + '/public'));

router.get('/', function (req, res) {
    res.sendFile(path.join(__dirname + '/index.html'));
    //__dirname : It will resolve to your project folder.
});

router.get('/about', function (req, res) {
    res.sendFile(path.join(__dirname + '/about.html'));
});

router.get('/sitemap', function (req, res) {
    res.sendFile(path.join(__dirname + '/sitemap.html'));
});

//add the router
app.use('/', router);
app.listen(process.env.port || 3000);

console.log('Running at Port 3000');

Create new index.html, about.html, sitemap.html pages.

If you run the page now with nodemon start, you will be faced with a MIME type error.

Refused to execute script from ... because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

This is because the line app.use(express.static(__dirname + ‘/public’)); states that a public directory is required in order to serve up static content. To get around this error, create a new directory called public, and add the necessary script and styles in this directory.

Once the public directory has been added, start the server using:

nodemon start