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:
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)
the reason seems this:
app.use('/app',approutes); this adds routes prefix of /app, should /api:
app.use('/api', approutes); 

Comments
Post a Comment