In this blog, we are going to learn how to perform CRUD (Create, Read, Update and Delete) operations with the help of Rest API using Node.js, MongoDB as our database, and Expess.
In simple terms, REST stands for Representational State Transfer. It is an architectural style design for distributed hypermedia, or an Application Programming Interface (API). In REST, we use various standard
HTTP methods like
DELETE to perform any
CRUD operation on resource.
REST, everything is
Resource. A resource can be an image, document, a temporary service, a collection of other resource, and any other object. Each resource has resource identifier to identify it.
HTTP Methods for CRUD
REST guidelines, we should use only
HTTP methods to perform
CRUD operation on any resource. In this blog, we are going to use 4 HTTP methods like
DELETE to make our
Let’s have a brief introduction of each http method here.
- HTTP GET
HTTP GET is used to
Retrieve any resource. It returns the XML or JSON data with HTTP status code of 200. GET method is considered as safe, because we are just getting or reading the resource data, not doing any changes in the resource data.
- HTTP POST
HTTP POST is used to
Create a new resource. On successful creation of resource, it will return HTTP status code of 201, a Location header with a link to the newly created resource.
- HTTP PUT
HTTP PUT is used to
Update any existing resource. On successful, it will return HTTP status code of 200.
- HTTP DELETE
HTTP DELETE, as the name suggests, is used to
Delete any existing resource. On successful, it will return HTTP status code of 200.
|HTTP Methods||CRUD||Status Code|
|GET||Read||200 (OK), 404 (Not Found)|
|POST||Create||201 (OK), 404 (Not Found),|
|PUT||Update||200 (OK), 204 (No Content), 404 (Not Found)|
|DELETE||Delete||200 (OK), 404 (Not Found)|
Let’s move forward into the details of other pieces of creating our REST API.
We are going to use Express.js or simply Express. It is a web application framework for Node.js. It has been released as free and open source software. You can create web application and APIs using Express. It has support for routing, middleware, view system etc.
Mongoose is Object Document Mapping or ODM tool for Node.js and MongoDB. Mongoose provide a straight-forward, schema based solution to model to your application data. It includes built-in type casting, validation, query building, business logic hooks and many more.
You must have Node.js and MongoDB installed on your machine. Click the below links, if you don’t have any one of them.
For MongoDB, I am using mLab free account for online MongoDB database. You can try this one as well, instead of installing on your local machine.
Install Postman – Google Chrome for testing purpose.
After setting up prerequisites, let move forward to build our application.
In our application, we are going to create a product based application. We will use REST APIs to create, update, get and delete the product. Let’s go to create our application.
1. Create package.json
Let’s create a folder, and start with creating
package.json file first. Use this command in your terminal window.
If you notice line 5, we have defined
server.js as our main entry point.
2. Install Packages
Let’s install all the
body-parser package dependencies in our app.
npm install express body-parser mongoose –save
Once these packages installed successfully, our
package.json file will be updated automatically. Our latest file will be like this.
dependencies section of our file, all these packages are mentioned there.
3. Creating Our Server
Let’s create a
server.js file in the root directory of the application.
Let’s briefly review our above code. First of all, we imported the required dependencies in our server.js file.
It is Node.js body parser middleware. It parse the incoming request bodies in a middleware before your handlers, available under the
Learn more about bodyParser.urlencoded([options])
Learn more about bodyParser.json([options])
Then, we define a default route using GET Http method. By default, it will return our message on default url.
Finally, we are going to listen all incoming requests on port 3000.
4. Run the server
Once everything is all set, let’s wake up our server by running this command in our terminal window.
Server is listening on port 3000
5. Create Configuration file
Let’s create a config file in our app, where we can define various constants like dbconnection or port number instead of hard-coded it everywhere. So, create a
config.js file in your app folder.
So, here I mentioned two constants in
- url: Our MongodB connection url.
- serverport: Our listening server port.
6. Connecting to Database
Let’s connect with our MongoDb database. Add these lines of codes in
server.js file after the
Also, we are going to replace our hard-coded server port with our config constant in server.js file
Here, you can see, we are now using
config.serverport in app.listen().
Now, run again the server using this command.
Server is listening on port 3000
Successfully connected to the database
7. Creating Product Model
Let’s create a
product model in our app folder in order to save the data in our db. Create a
product.model.js file in your app.
Here, we have defined our
ProductSchema with following properties. Along with this, we also set
timestamps property to
true. This property will add two fields automatically to schema. These fields are :
updatedAt in your schema.
8. Creating our Controller’s functions
We are going to write all functions related to create, retrieve, update and delete products in our controller file. Let’s create a controller file named
product.controller.js in your app folder.
9. Defining Product API’s Routes
Next step is to create our api routes. Create a
product.routes.js file in your app folder.
Note: import this route file in our server.js file after these lines. See line 4 in the below code.
10. Enable the CORS
If you try to access your api routes through your client-side app, you might face
Access-Control-Allow-Origin error messages. So, in order to avoid these message, we are also enabling
CORS in our
So, this will be our final
This will be our project structure.
Testing our REST APIs
Now, it’s time to test our all REST APIs for CRUD Operation.
- Create Product
I have added few products in the database. See the below screen shot.
- Get All Products
- Get Single Product
- Update Product
- Delete Product
You can download all the project files from GitHub.
In this blog, we learned about how to create a Node.js RESTful API app. We learned about how to perform CRUD operation on MongoDB database. Also, We learned about how to call our APIs endpoint in POSTMAN, and get the results.