node.js - NodeJs routes are no working -


i trying create api login in nodejs.but when check login route via http requester showingcannot "post /api/authenticate"

the project structure:

enter image description here

server.js file:

var express    = require('express');  var app        = express();  var port       = process.env.port||8080;  var morgan     = require('morgan');  var mongoose   = require('mongoose');  var bodyparser = require('body-parser');  var router     = express.router();  var approutes  = require('./app/routes/api')(router);  var path       = require('path');    app.use(morgan('dev'));  app.use(bodyparser.json());   app.use(bodyparser.urlencoded({ extended: true }));   app.use(express.static(__dirname + '/public'));  app.use('/app',approutes);      mongoose.connect('mongodb://localhost:27017/tutorial', function(err){  	if(err) {  		console.log('not connected database: '+ err);  	}  	else {  		console.log('succesfully connected mongodb');  	}  });    app.get('*',function(req,res){       res.sendfile(path.join(__dirname + '/public/app/views/index.html'));  });    app.listen(port, function () {  	console.log('running server on port ' + port);  });   

/app/models/user.js:

var mongoose = require('mongoose');  var schema   = mongoose.schema;  var bcrypt   = require('bcrypt-nodejs');     var userschema = new schema({     username: { type: string, lowercase: true, required: true, unique: true },     password: { type: string, required: true },     email: { type: string, lowercase: true, required: true, unique: true }    });    userschema.pre('save', function(next) {    var user = this;    bcrypt.hash(user.password, null, null, function(err, hash) {      if (err) return next(err);      user.password = hash;       next();  });    next();  });      module.exports = mongoose.model('user', userschema);

/app/routes/api.js:

var user       =require('../models/user');    module.exports = function(router) {    //http://localhost:8080/api/users    //user registration route    router.post('/users', function(req,res){      var user = new user();      user.username = req.body.username;      user.password = req.body.password;      user.email    = req.body.email;    if (req.body.username == null ||  req.body.username == '' || req.body.email == null || req.body.email == ''|| req.body.password == null  || req.body.password == ''  ){      res.send('ensure username, email , password provided');        } else {          user.save(function(err){        if(err){         res.send('username or email exist');        }        else {          res.send('user created!!!')        }      });    }        });     //user login route     //http://localhost:8080/api/authenticate     router.post('/authenticate',function(req,res) {         res.send('testing route');     });      return router;  }

and http requester output (it working fine register api in /app/models/api.js)

enter image description here

the reason seems this:

app.use('/app',approutes); 

this adds routes prefix of /app, should /api:

app.use('/api', approutes); 

Comments

Popular posts from this blog

python - Selenium remoteWebDriver (& SauceLabs) Firefox moseMoveTo action exception -

html - How to custom Bootstrap grid height? -

transpose - Maple isnt executing function but prints function term -