Create an advanced Rest CRUD API For Node JS with Express and MongoDB

Hello everyone

In this article, we're going to show how to build an advanced CRUD API for Node JS.

 

What Technologies and Architecture we'll use - 

  1. NODE JS
  2. Express JS
  3. Mongo DB
  4. Mongoose Object Model
  5. Repository Pattern
  6. MVC Pattern
  7. Schema Validation
  8. Input Request validation
  9. and Many more standard

 

What features included - 

  1. API For - All Todos List
  2. API For - Single Todos Get
  3. API For - Post New Todo
  4. API For - Put API - Edit Todo
  5. API For - Delete API - Delete Todo
  6. API For - Delete All API

 

Step By Step How to Make:

It's coming soon [Please check the Below process How to Run for now]

 

How to Run:

Install NPM

npm i
 

Create .env file by copying .env.example

MONGODB_DEFAULT_DB=
MONGODB_CLUSTER=
MONGODB_USERNAME=
MONGODB_PASSWORD=
 

Run Project with nodemon setup (Watch any changes)

npm run dev
 

 

Postman API Link

https://www.getpostman.com/collections/f96bafc60eb5fa7a7784

Live Web API Demo Links at a glance

  1. Base URL - https://node-cruds-api.herokuapp.com/
  2. All Todos - https://node-cruds-api.herokuapp.com/todos
  3. Single Todos - https://node-cruds-api.herokuapp.com/todos/60fb121b55e09ca6e646e93e
  4. Post API - https://node-cruds-api.herokuapp.com/todos [Body dataset Read below]
  5. Put API - https://node-cruds-api.herokuapp.com/todos/60fb121b55e09ca6e646e93e [Body dataset Read below]
  6. Delete API - https://node-cruds-api.herokuapp.com/todos/60fb121b55e09ca6e646e93e [Body dataset Read below]
  7. Delete All API - https://node-cruds-api.herokuapp.com/todos [Body dataset Read below]

Todo List

URL: http://localhost:3000/todos Method: GET

Response:
[
  {
    "_id": "60fadbf0fb1e9926fb60c07d",
    "title": "First todo",
    "status": "Done"
  },
  {
    "_id": "60fadfc796dbc5f55f4adbe0",
    "title": "Another task",
    "status": "Pending"
  }
]
 

Todo Detail:

Endpoint: http://localhost:3000/todos/60fadbf0fb1e9926fb60c07d

Method: GET

Response:
{
  "_id": "60fadbf0fb1e9926fb60c07d",
  "title": "First todo",
  "status": "Done"
}
 

Todo Create:

Endpoint: http://localhost:3000/todos

Method: POST

Body:
{
  "title": "Demo Todo 1",
  "status": "Pending"
}
 
Response:
{
  "_id": "60fb0e8bd8cd4f9cb52910a0",
  "title": "Demo Todo 1",
  "status": "Pending",
  "createdAt": "2021-07-23T18:46:35.288Z",
  "updatedAt": "2021-07-23T18:46:35.288Z",
  "__v": 0
}
 

Todo Update:

Endpoint: http://localhost:3000/todos/60fadbf0fb1e9926fb60c07d

Method: PUT

Body:
{
  "title": "Demo Todo 1 Updated",
  "status": "Done"
}
 
Response:
{
  "message": "Todo has been updated successfully !",
  "data": {
    "_id": "60fadbf0fb1e9926fb60c07d",
    "title": "Demo Todo 1 Updated",
    "createdAt": "2021-07-23T17:54:04.823Z",
    "updatedAt": "2021-07-23T18:54:12.279Z",
    "__v": 0,
    "status": "Done"
  }
}
 

Todo Delete:

Endpoint: http://localhost:3000/todos/60fadbf0fb1e9926fb60c07d

Method: DELETE

Response:
{
  "message": "Todo has been deleted successfully !",
  "data": {
    "_id": "60fb139e55e09ca6e646e947",
    "title": "Test Todo",
    "status": "Done",
    "createdAt": "2021-07-23T19:08:14.137Z",
    "updatedAt": "2021-07-23T19:08:14.137Z",
    "__v": 0
  }
}
 

Todo Delete All:

Endpoint: http://localhost:3000/todos

Method: DELETE

Response:
{
  "message": "7 Todos have been deleted successfully !"
}

 

Github Repository of Node JS CRUD API Project

https://github.com/ManiruzzamanAkash/Node-Advanced-CRUD-API

 

Previous
#5 Laravel Views
Next
React Context API - An Advanced Introduction and Complete Examples