- What is REST?
- Best thing ever. makes developers life much easier.
- REST means Representational State Transfer
- You can simply make a CRUD app using this.
- Client makes HTTP requests to the API
- API handles Routes,Business Logic
- Sends and retrieve data from the database.
- This is simple, scalable and reliable.
|  | 
| REST API Architecture | 
- We are going to make a simple REST app using Node Express framework and MongoDB.
- First you have follow these and setup the project.
- First you have setup node and create a project. I have explained this in my Node.js for dummies post.
- Then you have to setup MonogoDB and keep it running. I have explained this in my MongoDB for dummies post
- You need a postman app for testing HTTP requests. Download it from here.
- And you need Robo 3T app for MongoDB GUI supporter. Thank me later for this Robo 3T.
- Now lets get our hands dirty,
- First we add express frame work to our project
npm install express --save
- this --save adds the dependency or "external resources" to package.json file in the project.
Now we can start development,
- First thing to be done is import the dependency, by requiring it on the top of the project. otherwise we cannot use express.
const express=require('express');
- I declare it as constant, because this variable should be declared only once.
- Then i create an instance of the app.
const app=express();
- And now app contains all the properties functions of an express app.
{ [EventEmitter: app]  domain: undefined,  _events: { mount: [Function: onmount] },  _maxListeners: undefined,  setMaxListeners: [Function: setMaxListeners],  getMaxListeners: [Function: getMaxListeners],  emit: [Function: emit],  addListener: [Function: addListener],  on: [Function: addListener],  prependListener: [Function: prependListener],  once: [Function: once],  prependOnceListener: [Function: prependOnceListener],  removeListener: [Function: removeListener],  removeAllListeners: [Function: removeAllListeners],  listeners: [Function: listeners],  listenerCount: [Function: listenerCount],  eventNames: [Function: eventNames],  init: [Function: init],  defaultConfiguration: [Function: defaultConfiguration],  lazyrouter: [Function: lazyrouter],  handle: [Function: handle],  use: [Function: use],  route: [Function: route],  engine: [Function: engine],  param: [Function: param],  set: [Function: set],  path: [Function: path],  enabled: [Function: enabled],  disabled: [Function: disabled],  enable: [Function: enable],  disable: [Function: disable],  acl: [Function],  bind: [Function],  checkout: [Function],  connect: [Function],  copy: [Function],  delete: [Function],  get: [Function],  head: [Function],  link: [Function],  lock: [Function],  'm-search': [Function],  merge: [Function],  mkactivity: [Function],  mkcalendar: [Function],  mkcol: [Function],  move: [Function],  notify: [Function],  options: [Function],  patch: [Function],  post: [Function],  propfind: [Function],  proppatch: [Function],  purge: [Function],  put: [Function],  rebind: [Function],  report: [Function],  search: [Function],  subscribe: [Function],  trace: [Function],  unbind: [Function],  unlink: [Function],  unlock: [Function],  unsubscribe: [Function],  all: [Function: all],  del: [Function],  render: [Function: render],  listen: [Function: listen],  request: IncomingMessage { app: [Circular] },  response: ServerResponse { app: [Circular] },  cache: {},  engines: {},  settings:   { 'x-powered-by': true,     etag: 'weak',     'etag fn': [Function: generateETag],     env: 'development',     'query parser': 'extended',     'query parser fn': [Function: parseExtendedQueryString],     'subdomain offset': 2,     'trust proxy': false,     'trust proxy fn': [Function: trustNone],     view: [Function: View],     views: 'F:\\Projects\\Node\\REST-app1\\views',     'jsonp callback name': 'callback' },  _eventsCount: 1,  locals:   { settings:      { 'x-powered-by': true,        etag: 'weak',        'etag fn': [Function: generateETag],        env: 'development',        'query parser': 'extended',        'query parser fn': [Function: parseExtendedQueryString],        'subdomain offset': 2,        'trust proxy': false,        'trust proxy fn': [Function: trustNone],        view: [Function: View],        views: 'F:\\Projects\\Node\\REST-app1\\views',        'jsonp callback name': 'callback' } },  mountpath: '/' }
- You can see it all. Don't get confused. Only for GEEKS.
- Now we have setup our app.
- We have to listen to incoming requests on a port.
- But how do we listen to incoming requests.
app.listen(process.env.port||3000,function () {
console.log("listeing on port 3000");
});
- This code does that for us. the process.env.port||3000
- This tell us to listen on port 3000 or port on the web server environment that the app can listen to requests.
 




