├── .gitignore ├── models └── user.js ├── package.json ├── README.md ├── test ├── 1_BaseSetup.js ├── 2_AddSwaggerPlugin.js ├── 5_GetAllUser.js ├── 3_WithMongoDBConnection.js ├── 8_DeleteUser.js ├── 4_SaveUser.js ├── 7_UpdateUser.js └── 6_GetSingleUser.js └── app.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | .idea/ -------------------------------------------------------------------------------- /models/user.js: -------------------------------------------------------------------------------- 1 | var mongoose = require('mongoose'); 2 | var Schema = mongoose.Schema; 3 | 4 | var UserSchema = new Schema({ 5 | name: String, 6 | age: Number 7 | }); 8 | 9 | module.exports = mongoose.model('User', UserSchema, 'User'); -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RESTful-HAPI", 3 | "version": "0.0.1", 4 | "dependencies": { 5 | "good-console": "^5.0.0", 6 | "hapi": "^8.5.1", 7 | "hapi-swagger": "0.7.3", 8 | "joi": "^6.4.2", 9 | "mongoose": "^4.0.3" 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # RESTful Hapi Api 2 | 3 | With the increasing popularity of Hapi in the Node community, it is a good option to build our API’s using this framework. Lets understand the Hapi framework and how easily we can define routes to build Hapi RESTful API for production ready environment. We will also be using some of the Hapi plugin’s for ease of API’s validation and to test routes. 4 | 5 | Lets look at the API we want to build and what it can do. 6 | 7 | ### Our Application 8 | 9 | * Handle CRUD for an item ( we’re are going to use `user` ) 10 | * Have a standard URL( “http://demo.com/api/user” and “http://demo.com/api/user/:id” ) 11 | * Use the proper HTTP verbs to make it RESTful ( GET, POST, PUT, and DELETE ) 12 | * Return JSON data 13 | * Log all request to the console 14 | 15 | ### Hapi Routes 16 | 17 | * /api/user GET Get all the users. 18 | * /api/user POST Create a new user. 19 | * /api/user/{id} GET Get a single user. 20 | * /api/user/{id} PUT Update a user with new info. 21 | * /api/user/{id} DELETE Delete a user. 22 | 23 | Refer my blog which describe and walk through step-by-step process of making RESTful Hapi API using `NodeJS` or `iojs` 24 | 25 | [Click me] to read more. 26 | 27 | [Click me]:http://www.tothenew.com/blog/build-restful-api-using-node-and-hapi/ 28 | -------------------------------------------------------------------------------- /test/1_BaseSetup.js: -------------------------------------------------------------------------------- 1 | // ================ Base Setup ======================== 2 | // Include Hapi package 3 | var Hapi = require('hapi'); 4 | 5 | // Create Server Object 6 | var server = new Hapi.Server(); 7 | 8 | // Define PORT number 9 | server.connection({port: 7002}); 10 | 11 | // =============== Routes for our API ======================= 12 | // Define GET route 13 | server.route({ 14 | method: 'GET', // Methods Type 15 | path: '/api/user', // Url 16 | handler: function (request, reply) { //Action 17 | 18 | // Response JSON object 19 | reply({ 20 | statusCode: 200, 21 | message: 'Getting All User Data', 22 | data: [ 23 | { 24 | name:'Kashish', 25 | age:24 26 | }, 27 | { 28 | name:'Shubham', 29 | age:21 30 | }, 31 | { 32 | name:'Jasmine', 33 | age:24 34 | } 35 | ] 36 | }); 37 | } 38 | }); 39 | 40 | // =============== Start our Server ======================= 41 | // Lets start the server 42 | server.start(function () { 43 | console.log('Server running at:', server.info.uri); 44 | }); -------------------------------------------------------------------------------- /test/2_AddSwaggerPlugin.js: -------------------------------------------------------------------------------- 1 | // ================ Base Setup ======================== 2 | // Include Hapi package 3 | var Hapi = require('hapi'); 4 | 5 | // Create Server Object 6 | var server = new Hapi.Server(); 7 | 8 | // Define PORT number 9 | server.connection({port: 7002}); 10 | 11 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 12 | server.register({ 13 | register: require('hapi-swagger'), 14 | options: { 15 | apiVersion: "0.0.1" 16 | } 17 | }, function (err) { 18 | if (err) { 19 | server.log(['error'], 'hapi-swagger load error: ' + err) 20 | } else { 21 | server.log(['start'], 'hapi-swagger interface loaded') 22 | } 23 | }); 24 | 25 | // =============== Routes for our API ======================= 26 | // Define GET route 27 | server.route({ 28 | method: 'GET', // Methods Type 29 | path: '/api/user', // Url 30 | config: { 31 | // Include this API in swagger documentation 32 | tags: ['api'], 33 | description: 'Get All User data', 34 | notes: 'Get All User data' 35 | }, 36 | handler: function (request, reply) { //Action 37 | 38 | // Response JSON object 39 | reply({ 40 | statusCode: 200, 41 | message: 'Getting All User Data', 42 | data: [ 43 | { 44 | name:'Kashish', 45 | age:24 46 | }, 47 | { 48 | name:'Shubham', 49 | age:21 50 | }, 51 | { 52 | name:'Jasmine', 53 | age:24 54 | } 55 | ] 56 | }); 57 | } 58 | }); 59 | 60 | // =============== Start our Server ======================= 61 | // Lets start the server 62 | server.start(function () { 63 | console.log('Server running at:', server.info.uri); 64 | }); -------------------------------------------------------------------------------- /test/5_GetAllUser.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('../models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | // Fetching all users data 37 | server.route({ 38 | method: 'GET', 39 | path: '/api/user', 40 | config: { 41 | // Include this API in swagger documentation 42 | tags: ['api'], 43 | description: 'Get All User data', 44 | notes: 'Get All User data' 45 | }, 46 | handler: function (request, reply) { 47 | //Fetch all data from mongodb User Collection 48 | UserModel.find({}, function (error, data) { 49 | if (error) { 50 | reply({ 51 | statusCode: 503, 52 | message: 'Failed to get data', 53 | data: error 54 | }); 55 | } else { 56 | reply({ 57 | statusCode: 200, 58 | message: 'User Data Successfully Fetched', 59 | data: data 60 | }); 61 | } 62 | }); 63 | } 64 | }); 65 | 66 | 67 | // Lets start the server 68 | server.start(function () { 69 | console.log('Server running at:', server.info.uri); 70 | }); -------------------------------------------------------------------------------- /test/3_WithMongoDBConnection.js: -------------------------------------------------------------------------------- 1 | // ================ Base Setup ======================== 2 | // Include Hapi package 3 | var Hapi = require('hapi'); 4 | 5 | // Create Server Object 6 | var server = new Hapi.Server(); 7 | 8 | // Include Mongoose ORM to connect with database 9 | var mongoose = require('mongoose'); 10 | 11 | // Making connection with `restdemo` database in your local machine 12 | mongoose.connect('mongodb://localhost/restdemo'); 13 | 14 | // Importing `user` model from `models/user.js` file 15 | var UserModel = require('./models/user'); 16 | 17 | // Define PORT number 18 | server.connection({port: 7002}); 19 | 20 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 21 | server.register({ 22 | register: require('hapi-swagger'), 23 | options: { 24 | apiVersion: "0.0.1" 25 | } 26 | }, function (err) { 27 | if (err) { 28 | server.log(['error'], 'hapi-swagger load error: ' + err) 29 | } else { 30 | server.log(['start'], 'hapi-swagger interface loaded') 31 | } 32 | }); 33 | 34 | // =============== Routes for our API ======================= 35 | // Define GET route 36 | server.route({ 37 | method: 'GET', // Methods Type 38 | path: '/api/user', // Url 39 | config: { 40 | // Include this API in swagger documentation 41 | tags: ['api'], 42 | description: 'Get All User data', 43 | notes: 'Get All User data' 44 | }, 45 | handler: function (request, reply) { //Action 46 | 47 | // Response JSON object 48 | reply({ 49 | statusCode: 200, 50 | message: 'Getting All User Data', 51 | data: [ 52 | { 53 | name:'Kashish', 54 | age:24 55 | }, 56 | { 57 | name:'Shubham', 58 | age:21 59 | }, 60 | { 61 | name:'Jasmine', 62 | age:24 63 | } 64 | ] 65 | }); 66 | } 67 | }); 68 | 69 | // =============== Start our Server ======================= 70 | // Lets start the server 71 | server.start(function () { 72 | console.log('Server running at:', server.info.uri); 73 | }); -------------------------------------------------------------------------------- /test/8_DeleteUser.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('../models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | server.route({ 37 | method: 'DELETE', 38 | path: '/api/user/{id}', 39 | config: { 40 | tags: ['api'], 41 | description: 'Remove specific user data', 42 | notes: 'Remove specific user data', 43 | validate: { 44 | params: { 45 | id: Joi.string().required() 46 | } 47 | } 48 | }, 49 | handler: function (request, reply) { 50 | 51 | // `findOneAndRemove` is a mongoose methods to remove a particular record into database. 52 | UserModel.findOneAndRemove({_id: request.params.id}, function (error) { 53 | if (error) { 54 | reply({ 55 | statusCode: 503, 56 | message: 'Error in removing User', 57 | data: error 58 | }); 59 | } else { 60 | reply({ 61 | statusCode: 200, 62 | message: 'User Deleted Successfully' 63 | }); 64 | } 65 | }); 66 | 67 | } 68 | }); 69 | 70 | // Lets start the server 71 | server.start(function () { 72 | console.log('Server running at:', server.info.uri); 73 | }); -------------------------------------------------------------------------------- /test/4_SaveUser.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('../models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | server.route({ 37 | method: 'POST', 38 | path: '/api/user', 39 | config: { 40 | // "tags" enable swagger to document API 41 | tags: ['api'], 42 | description: 'Save user data', 43 | notes: 'Save user data', 44 | // We use Joi plugin to validate request 45 | validate: { 46 | payload: { 47 | // Both name and age are required fields 48 | name: Joi.string().required(), 49 | age: Joi.number().required() 50 | } 51 | } 52 | }, 53 | handler: function (request, reply) { 54 | 55 | // Create mongodb user object to save it into database 56 | var user = new UserModel(request.payload); 57 | 58 | //Call save methods to save data into database and pass callback methods to handle error 59 | user.save(function (error) { 60 | if (error) { 61 | reply({ 62 | statusCode: 503, 63 | message: error 64 | }); 65 | } else { 66 | reply({ 67 | statusCode: 201, 68 | message: 'User Saved Successfully' 69 | }); 70 | } 71 | }); 72 | } 73 | }); 74 | 75 | // Lets start the server 76 | server.start(function () { 77 | console.log('Server running at:', server.info.uri); 78 | }); -------------------------------------------------------------------------------- /test/7_UpdateUser.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('../models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | server.route({ 37 | method: 'PUT', 38 | path: '/api/user/{id}', 39 | config: { 40 | // Swagger documentation fields tags, description, note 41 | tags: ['api'], 42 | description: 'Update specific user data', 43 | notes: 'Update specific user data', 44 | 45 | // Joi api validation 46 | validate: { 47 | params: { 48 | //`id` is required field and can only accept string data 49 | id: Joi.string().required() 50 | }, 51 | payload: { 52 | name: Joi.string(), 53 | age: Joi.number() 54 | } 55 | } 56 | }, 57 | handler: function (request, reply) { 58 | 59 | // `findOneAndUpdate` is a mongoose modal methods to update a particular record. 60 | UserModel.findOneAndUpdate({_id: request.params.id}, request.payload, function (error, data) { 61 | if (error) { 62 | reply({ 63 | statusCode: 503, 64 | message: 'Failed to get data', 65 | data: error 66 | }); 67 | } else { 68 | reply({ 69 | statusCode: 200, 70 | message: 'User Updated Successfully', 71 | data: data 72 | }); 73 | } 74 | }); 75 | 76 | } 77 | }); 78 | 79 | // Lets start the server 80 | server.start(function () { 81 | console.log('Server running at:', server.info.uri); 82 | }); -------------------------------------------------------------------------------- /test/6_GetSingleUser.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('../models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | server.route({ 37 | method: 'GET', 38 | //Getting data for particular user "/api/user/1212313123" 39 | path: '/api/user/{id}', 40 | config: { 41 | tags: ['api'], 42 | description: 'Get specific user data', 43 | notes: 'Get specific user data', 44 | validate: { 45 | // Id is required field 46 | params: { 47 | id: Joi.string().required() 48 | } 49 | } 50 | }, 51 | handler: function (request, reply) { 52 | 53 | //Finding user for particular userID 54 | UserModel.find({_id: request.params.id}, function (error, data) { 55 | if (error) { 56 | reply({ 57 | statusCode: 503, 58 | message: 'Failed to get data', 59 | data: error 60 | }); 61 | } else { 62 | if (data.length === 0) { 63 | reply({ 64 | statusCode: 200, 65 | message: 'User Not Found', 66 | data: data 67 | }); 68 | } else { 69 | reply({ 70 | statusCode: 200, 71 | message: 'User Data Successfully Fetched', 72 | data: data 73 | }); 74 | } 75 | } 76 | }); 77 | } 78 | }); 79 | 80 | // Lets start the server 81 | server.start(function () { 82 | console.log('Server running at:', server.info.uri); 83 | }); -------------------------------------------------------------------------------- /app.js: -------------------------------------------------------------------------------- 1 | // Include Hapi package 2 | var Hapi = require('hapi'); 3 | 4 | // Include Joi package to validate request params and payload. 5 | var Joi = require('joi'); 6 | 7 | // Create Server Object 8 | var server = new Hapi.Server(); 9 | 10 | // Include Mongoose ORM to connect with database 11 | var mongoose = require('mongoose'); 12 | 13 | // Making connection with `restdemo` database in your local machine 14 | mongoose.connect('mongodb://localhost/restdemo'); 15 | 16 | // Importing `user` model from `models/user.js` file 17 | var UserModel = require('./models/user'); 18 | 19 | // Define PORT number You can change it if you want 20 | server.connection({port: 7002}); 21 | 22 | // Register Swagger Plugin ( Use for documentation and testing purpose ) 23 | server.register({ 24 | register: require('hapi-swagger'), 25 | options: { 26 | apiVersion: "0.0.1" 27 | } 28 | }, function (err) { 29 | if (err) { 30 | server.log(['error'], 'hapi-swagger load error: ' + err) 31 | } else { 32 | server.log(['start'], 'hapi-swagger interface loaded') 33 | } 34 | }); 35 | 36 | // Register Good Plugin ( Use to log API url's hit on serer ) 37 | server.register({ 38 | register: require('good'), 39 | options: { 40 | opsInterval: 1000, 41 | reporters: [{ 42 | reporter: require('good-console'), 43 | events: {log: '*', response: '*'} 44 | }] 45 | } 46 | }, function (err) { 47 | 48 | if (err) { 49 | console.error(err); 50 | } 51 | 52 | }); 53 | 54 | // Fetching all users data 55 | server.route({ 56 | method: 'GET', 57 | path: '/api/user', 58 | config: { 59 | // Include this API in swagger documentation 60 | tags: ['api'], 61 | description: 'Get All User data', 62 | notes: 'Get All User data' 63 | }, 64 | handler: function (request, reply) { 65 | //Fetch all data from mongodb User Collection 66 | UserModel.find({}, function (error, data) { 67 | if (error) { 68 | reply({ 69 | statusCode: 503, 70 | message: 'Failed to get data', 71 | data: error 72 | }); 73 | } else { 74 | reply({ 75 | statusCode: 200, 76 | message: 'User Data Successfully Fetched', 77 | data: data 78 | }); 79 | } 80 | }); 81 | } 82 | }); 83 | 84 | server.route({ 85 | method: 'GET', 86 | //Getting data for particular user "/api/user/1212313123" 87 | path: '/api/user/{id}', 88 | config: { 89 | tags: ['api'], 90 | description: 'Get specific user data', 91 | notes: 'Get specific user data', 92 | validate: { 93 | // Id is required field 94 | params: { 95 | id: Joi.string().required() 96 | } 97 | } 98 | }, 99 | handler: function (request, reply) { 100 | 101 | //Finding user for particular userID 102 | UserModel.find({_id: request.params.id}, function (error, data) { 103 | if (error) { 104 | reply({ 105 | statusCode: 503, 106 | message: 'Failed to get data', 107 | data: error 108 | }); 109 | } else { 110 | if (data.length === 0) { 111 | reply({ 112 | statusCode: 200, 113 | message: 'User Not Found', 114 | data: data 115 | }); 116 | } else { 117 | reply({ 118 | statusCode: 200, 119 | message: 'User Data Successfully Fetched', 120 | data: data 121 | }); 122 | } 123 | } 124 | }); 125 | } 126 | }); 127 | 128 | server.route({ 129 | method: 'PUT', 130 | path: '/api/user/{id}', 131 | config: { 132 | // Swagger documentation fields tags, description, note 133 | tags: ['api'], 134 | description: 'Update specific user data', 135 | notes: 'Update specific user data', 136 | 137 | // Joi api validation 138 | validate: { 139 | params: { 140 | //`id` is required field and can only accept string data 141 | id: Joi.string().required() 142 | }, 143 | payload: { 144 | name: Joi.string(), 145 | age: Joi.number() 146 | } 147 | } 148 | }, 149 | handler: function (request, reply) { 150 | 151 | // `findOneAndUpdate` is a mongoose modal methods to update a particular record. 152 | UserModel.findOneAndUpdate({_id: request.params.id}, request.payload, function (error, data) { 153 | if (error) { 154 | reply({ 155 | statusCode: 503, 156 | message: 'Failed to get data', 157 | data: error 158 | }); 159 | } else { 160 | reply({ 161 | statusCode: 200, 162 | message: 'User Updated Successfully', 163 | data: data 164 | }); 165 | } 166 | }); 167 | 168 | } 169 | }); 170 | 171 | server.route({ 172 | method: 'POST', 173 | path: '/api/user', 174 | config: { 175 | tags: ['api'], 176 | description: 'Save user data', 177 | notes: 'Save user data', 178 | validate: { 179 | payload: { 180 | name: Joi.string().required(), 181 | age: Joi.number().required() 182 | } 183 | } 184 | }, 185 | handler: function (request, reply) { 186 | 187 | // Create mongodb user object to save it into database 188 | var user = new UserModel(request.payload); 189 | 190 | //Call save methods to save data into database and pass callback methods to handle error 191 | user.save(function (error) { 192 | if (error) { 193 | reply({ 194 | statusCode: 503, 195 | message: error 196 | }); 197 | } else { 198 | reply({ 199 | statusCode: 201, 200 | message: 'User Saved Successfully' 201 | }); 202 | } 203 | }); 204 | } 205 | }); 206 | 207 | server.route({ 208 | method: 'DELETE', 209 | path: '/api/user/{id}', 210 | config: { 211 | tags: ['api'], 212 | description: 'Remove specific user data', 213 | notes: 'Remove specific user data', 214 | validate: { 215 | params: { 216 | id: Joi.string().required() 217 | } 218 | } 219 | }, 220 | handler: function (request, reply) { 221 | 222 | // `findOneAndRemove` is a mongoose methods to remove a particular record into database. 223 | UserModel.findOneAndRemove({_id: request.params.id}, function (error) { 224 | if (error) { 225 | reply({ 226 | statusCode: 503, 227 | message: 'Error in removing User', 228 | data: error 229 | }); 230 | } else { 231 | reply({ 232 | statusCode: 200, 233 | message: 'User Deleted Successfully' 234 | }); 235 | } 236 | }); 237 | 238 | } 239 | }); 240 | 241 | // Lets start the server 242 | server.start(function () { 243 | console.log('Server running at:', server.info.uri); 244 | }); --------------------------------------------------------------------------------