NodeJS & MongoDB – create simple API
Setup Project
- mkdir <projectdir>/helloworld
- cd helloworld
- npm init
- name:
- version:
- description: Hello World API
- entry point: server.js
- test command:
- git repository:
- keywords:
- author: John Dunning
- license:
- npm install –save express body-parser mongoose bluebird
- npm install -g nodemon
- atom .
Create server.js
[code language=”javascript”]
var express = require(‘express’);
var bodyParser = require(‘body-parser’);
var mongoose = require(‘mongoose’)
mongoose.Promise = require(‘bluebird’);
var Person = require(‘./app/model/person’);
var app = express();
// Configure app for bodyParser()
// grab data from body of POST
app.use(bodyParser.urlencoded({extended: true}));
app.use(bodyParser.json());
// Set up server port to listen on
var port = process.env.PORT || 3000;
// Connect to Database
mongoose.connect(‘mongodb://localhost:27017/people’, {
useMongoClient: true,
/* other options */
});
// API Routes
var router = express.Router();
// Routes will all be prefixed with /api
app.use(‘/api’, router);
// MiddleWare ; Validate request
router.use(function(req, res, next) {
console.log(‘MiddleWare – Validate request’);
next();
});
// Test Route
router.get(‘/’, function(req, res) {
res.json({message: ‘Welcome to the Hello World API’})
});
// Person Route
router.route(‘/person’)
.post(function(req, res) {
var person = new Person();
person.firstname = req.body.firstname;
person.lastname = req.body.lastname;
person.age = req.body.age;
person.save(function(err) {
if(err) {
res.send(err);
}
res.json({message: person.firstname+" "+person.lastname+" was successfully added"})
});
})
.get(function(req, res) {
Person.find(function(err,people) {
if(err) {
res.send(err);
}
res.json(people);
});
});
router.route(‘/person/:person_id’)
.get(function(req,res) {
Person.findById(req.params.person_id, function(err, person) {
if(err) {
res.send(err);
}
res.json(person);
});
});
router.route(‘/person/lastname/:lastname’)
.get(function(req,res) {
Person.find({ lastname: req.params.lastname}, function(err, person) {
if(err) {
res.send(err);
}
res.json(person);
});
});
router.route(‘/person/age/:age’)
.get(function(req,res) {
Person.find({ age: req.params.age}, function(err, person) {
if(err) {
res.send(err);
}
res.json(person);
});
});
// Start the server
app.listen(port);
// Print a friendly message
console.log(‘Server listening on port ‘+port);
[/code]
Create Model
- open Atom
- create folders
- app
- app/model
- app/model/person.js
[code language=”javascript”]
var mongoose = require(‘mongoose’);
var Schema = mongoose.Schema;
var PersonSchema = new Schema({
firstname: String,
lastname: String,
age: Number
});
module.exports = mongoose.model(‘Person’,PersonSchema);
[/code]
Start MongoDB
- mongod
Start the Server
- nodemon server.js
Check the Response
- open Postman
- GET localhost:3000/api
[code language=”javascript”]
{
"message": "Welcome to the Hello World API"
}
[/code]
Postman
POST localhost:3000/api/person
- Headers
- Content-Type
- application/json
- Body
- raw
[code language=”javascript”]
{
"firstname": "Jon",
"lastname": "Doe",
"age": 21
}
[/code]
Send
[code language=”javascript”]
{
"firstname": "Jane",
"lastname": "Doe",
"age": 19
}
[/code]
Send
[code language=”javascript”]
{
"firstname": "Mick",
"lastname": "Doe",
"age": 14
}
[/code]
Send
[code language=”javascript”]
{
"firstname": "Andy",
"lastname": "Doe",
"age": 8
}
[/code]
Send
GET localhost:3000/api/person
[code language=”javascript”]
[
{
"_id": "5999c4c26604ae6a1da7e1f6",
"age": 21,
"lastname": "Doe",
"firstname": "Jon",
"__v": 0
},
{
"_id": "5999c4fcd77e466a3db7b05c",
"age": 19,
"lastname": "Doe",
"firstname": "Jane",
"__v": 0
},
{
"_id": "5999c5540a3fd46a6854adca",
"age": 14,
"lastname": "Doe",
"firstname": "Mick",
"__v": 0
},
{
"_id": "5999c57b70f4b66a7b58073d",
"age": 8,
"lastname": "Doe",
"firstname": "Andy",
"__v": 0
}
]
[/code]
GET localhost:3000/api/person/5999c4fcd77e466a3db7b05c
[code language=”javascript”]
{
"_id": "5999c4fcd77e466a3db7b05c",
"age": 19,
"lastname": "Doe",
"firstname": "Jane",
"__v": 0
}
[/code]
GET localhost:3000/api/person/lastname/Doe
[code language=”javascript”]
[
{
"_id": "5999c4c26604ae6a1da7e1f6",
"age": 21,
"lastname": "Doe",
"firstname": "Jon",
"__v": 0
},
{
"_id": "5999c4fcd77e466a3db7b05c",
"age": 19,
"lastname": "Doe",
"firstname": "Jane",
"__v": 0
},
{
"_id": "5999c5540a3fd46a6854adca",
"age": 14,
"lastname": "Doe",
"firstname": "Mick",
"__v": 0
},
{
"_id": "5999c57b70f4b66a7b58073d",
"age": 8,
"lastname": "Doe",
"firstname": "Andy",
"__v": 0
}
]
[/code]
GET localhost:3000/api/person/age/14
[code language=”javascript”]
[
{
"_id": "5999c5540a3fd46a6854adca",
"age": 14,
"lastname": "Doe",
"firstname": "Mick",
"__v": 0
}
]
[/code]
Tag:create api, postman, server, server.js, simple api