Question: What is RESTful APIs?
Full form of REST is Representational State Transfer. It is web standards architecture used to create an API.
Question: What type of request handled by RESTful APIs?
HTTP requests
Question: How to create an API?
- Create a folder with name of api in your node project, and create three folder inside this. i.e controllers, models and routes.
- Create 3 empty files in each folder i.e todoListController.js, todoListModel.js and todoListRoutes.js
- Now, Folder Structure will be as below:
-api
--api/controllers/todoListController.js
--api/models/todoListModel.js
--api/routes/todoListRoutes.js
-
Add Following script in each empty file:
todoListController.js
var mongoose = require('mongoose'),
Task = mongoose.model('Tasks');
/* List all todoList*/
exports.list_all_tasks = function(req, res) {
Task.find({}, function(err, task) {
if (err)
res.send(err);
res.json(task);
});
};
/* List all todoList*/
exports.create_a_task = function(req, res) {
var saveData = {}
saveData.name = req.body.name;
saveData.status = req.body.status;
var new_task = new Task(saveData);
new_task.save(function(err, task) {
if (err)
res.send(err);
res.json(task);
});
};
/* Get a todo list details*/
exports.read_a_task = function(req, res) {
Task.findById(req.params.taskId, function(err, task) {
if (err)
res.send(err);
res.json(task);
});
};
/* UPdate a toto data*/
exports.update_a_task = function(req, res) {
Task.findOneAndUpdate(req.params.taskId, req.body, {new : true}, function(err, task) {
if (err)
res.send(err);
res.json(task);
});
};
exports.delete_a_task = function(req, res) {
Task.remove({
_id: req.params.taskId
}, function(err, task) {
if (err)
res.send(err);
res.json({message: 'Task successfully deleted'});
});
};
todoListModel.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var TaskSchema = new Schema({
name: {
type: String,
Required: 'Kindly enter the name of the task'
},
Created_date: {
type: Date,
default: Date.now
},
status: {
type: [{
type: String,
enum: ['pending', 'ongoing', 'completed']
}],
default: ['ongoing']
}
});
module.exports = mongoose.model('Tasks', TaskSchema);
todoListRoutes.js
module.exports = function(app) {
var todoList = require('../controllers/todoListController');
// todoList Routes
app.route('/tasks')
.get(todoList.list_all_tasks)
.post(todoList.create_a_task);
app.route('/tasks/:taskId')
.get(todoList.read_a_task)
.post(todoList.update_a_task)
.delete(todoList.delete_a_task);
};
- Create a myapp.js empty file in project folder and add following script code.
var express = require('express'),
app = express(),
port = process.env.PORT || 3000,
mongoose = require('mongoose'),
Task = require('./api/models/todoListModel'),
bodyParser = require('body-parser');
mongoose.Promise = global.Promise;
mongoose.connect('mongodb://localhost/Tododb');
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
var routes = require('./api/routes/todoListRoutes');
routes(app);
app.listen(port);
console.log('RESTful API server started: ' + port+' PORT');
- Now you need install following modules
npm install express
npm install mongoose
npm install body-parser
-
Now run following command, to test the APIs
node myapp.js
Question: Provide Create Task API
URL: http://localhost:3000/tasks
Method: POST
Request Data:
{
"name":"I need to go for walk",
"status":"ongoing"
}
Question: Provide List All records API
URL: http://localhost:3000/tasks
Method: POST
Response Data:
[{"_id":"5937ff6a5fc96f1c1492877f","name":"I will go for walk daily.","__v":0,"status":["ongoing"],"Created_date":"2017-06-07T13:28:10.608Z"},{"_id":"593803fb5fc96f1c14928782","name":"Get up early in the morning","__v":0,"status":["ongoing"],"Created_date":"2017-06-07T13:47:39.246Z"}]
Question: Provide Update Records
URL: http://localhost:3000/tasks/5938d8e86d3e500cd8da6a12
Method: POST
Request Data:
{
"name": "I goes on walk daily.",
}
Question: Provide Get Records:
URL: http://localhost:3000/tasks/5938d8e86d3e500cd8da6a12
Method: POST
Response Data:
{"_id":"5938d8e86d3e500cd8da6a12","name":"Arun kumar Gupta","__v":0,"status":["ongoing"],"Created_date":"2017-06-08T04:56:08.156Z"}
Question: Provide Delete Records
URL: http://localhost:3000/tasks/5938d8e86d3e500cd8da6a12
Method: DELETE
Response Data:
{
"message": "Task successfully deleted"
}