2017-07-26 64 views
1

我想,當我檢查通過HTTP請求它showingCannot「POST/API /認證」航線的NodeJS不工作

項目結構的登錄路由創建於nodejs.but登錄的API:

enter image description here

server.js文件:

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){ 
 
\t if(err) { 
 
\t \t console.log('Not connected to the Database: '+ err); 
 
\t } 
 
\t else { 
 
\t \t console.log('Succesfully connected to Mongodb'); 
 
\t } 
 
}); 
 

 
app.get('*',function(req,res){ 
 
    res.sendFile(path.join(__dirname + '/public/app/views/index.html')); 
 
}); 
 

 
app.listen(port, function() { 
 
\t console.log('Running the 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 and Password is provided'); 
 
    
 
    } else { 
 
     user.save(function(err){ 
 
     if(err){ 
 
     res.send('Username or Email already exist'); 
 
     } 
 
     else { 
 
     res.send('User created!!!') 
 
     } 
 
    }); 
 
    } 
 
    
 
}); 
 
    //User login Route 
 
    //http://localhost:8080/api/authenticate 
 
    router.post('/authenticate',function(req,res) { 
 
     res.send('Testing the route'); 
 
    }); 
 

 
    return router; 
 
}

最後HTTP請求者輸出(它在註冊表中工作正常我在/app/models/api.js)

enter image description here

回答

2

原因似乎是這樣的:

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

這會增加你的路由與/app前綴,這應該是/api

app.use('/api', appRoutes); 
+0

感謝好友愚蠢的錯誤 –