2017-05-03 4 views
0

Ich bin neu hier und ich bekomme nicht Post/api/registrieren Fehler in Postman und 404 nicht in der Konsole gefunden, habe ich alle möglichen Fragen Antworten überprüft. Bitte helfen Sie mir so schnell wie möglich. Vielen Dank im Voraus.Kann nicht POST/api/register in Knoten Js

Die auth.controller.js Datei

var express = require ('express'); //EXPRESS Package 
var route = express.Router(); //define our app using express 
// var userModel = require('../model/user.model'); 
// var session = require('express-session'); 
var bodyParser = require('body-parser');// get body-parser 
route.use(bodyParser.json()); // for parsing application/json 
route.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded 
/** 
* 
* Register user 
*/ 
route.post('/api/register', function (req, res) { 
    console.log(req.body);//res.sendStatus(200); 
    // userModel.create(req.body).then(function() { 

    //   res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 

/** 
* 
* Login user 
*/ 
route.post('/api/login', function (req, res) { 

    // userModel.authenticate(req.body.email, req.body.password).then(function() { 

    //  res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 
module.exports = route; 

================================ ====================================== Die Datei server.js

var express = require ('express'); //EXPRESS Package 
var app = express(); //define our app using express 

var cors = require('cors'); 
var session = require('express-session'); 
var bodyParser = require('body-parser');// get body-parser 
// var morgan = require('morgan'); //use to see requests 
// var assert = require('assert'); 
// var path = require('path'); 
app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: true })); 
// app.use(cors()); 

/** 
* Header Control 
*/ 
app.use(function(req, res, next) { 

    res.header('Access-Control-Allow-Credentials', true); 
    res.header("Access-Control-Allow-Origin", "*"); 
    res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,PATCH"); 
    res.header('Access-Control-Allow-Headers', 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version'); 
    next(); 
}); 
//routes 
app.use('/api/register', require('./controllers/auth.controller')); 
app.use('/api/login', require('./controllers/auth.controller')); 
// app.use('/api/users', require('./controllers/users.controller')); 

// app.get('/api', function (req, res) { 
//  res.send('/api/login'); 
// }); 
// start server 
var server = app.listen(8001, 'localhost', function() { 

    console.log('Server listening at http://' + server.address().address + ':' + server.address().port); 
}); 

// module.exports = app; 
+1

'/ api/Register/api/register/'ist die Route, die Sie definiert haben. –

Antwort

0

Wenn Sie

app.use('/api/register', require('./controllers/auth.controller')); 

Ihre Anwendung Routen alles, was zukommtin require('./controllers/auth.controller'). Dann require('./controllers/auth.controller') überprüft die Rest der URL für /api/register oder /api/login, leitet die Anfrage an die entsprechende Middleware, wenn Ihr Router eine Übereinstimmung erhält.

Mit anderen Worten, Sie müssen nach/api/register/api/register schreiben, um Ihre gewünschte Middleware zu erreichen.

Für eine schnelle Lösung:

sollten Sie löschen

app.use('/api/register', require('./controllers/auth.controller')); 
app.use('/api/login', require('./controllers/auth.controller')); 

und ersetzen Sie es mit:

app.use('/', require('./controllers/auth.controller')); 

Für eine bessere:

Sie löschen sollten

app.use('/api/register', require('./controllers/auth.controller')); 
app.use('/api/login', require('./controllers/auth.controller')); 

und ersetzen Sie es mit:

app.use('/api', require('./controllers/auth.controller')); 

in Ihrem app.js und auch in Ihrem auth.controller.js sollten Sie ersetzen:

route.post('/api/register', function (req, res) { 
    console.log(req.body);//res.sendStatus(200); 
    // userModel.create(req.body).then(function() { 

    //   res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 

/** 
* 
* Login user 
*/ 
route.post('/api/login', function (req, res) { 

    // userModel.authenticate(req.body.email, req.body.password).then(function() { 

    //  res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 

mit:

route.post('/register', function (req, res) { 
    console.log(req.body);//res.sendStatus(200); 
    // userModel.create(req.body).then(function() { 

    //   res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 

/** 
* 
* Login user 
*/ 
route.post('/login', function (req, res) { 

    // userModel.authenticate(req.body.email, req.body.password).then(function() { 

    //  res.sendStatus(200); 
    // }).catch(function (err) { 

    //  res.status(400).send(err); 
    // }); 
}); 
+0

Großartig. Vielen Dank. Daran habe ich nie gedacht. Erstaunlich ... aber noch eine Sache, wenn ich mehr Controller für dynamischere Seiten habe, dann wird es alle Zeiten in auth.controller überprüfen oder es wird direkt den Zielcontroller finden –

+0

Hängt ganz davon ab, wie deine App deine anderen Controller benutzt. Es ist zu lang in einem Kommentar zu sagen, aber hier ist eine kurze Zusammenfassung: Sie haben die Funktionen, die req und res, oder? Sie nehmen einen weiteren Parameter: nächsten. Wenn Sie mehrere Controller für eine einzelne Route haben und Sie "next()" aufrufen, Am Ende des ersten Controllers können Sie auf diese Weise den zweiten Controller aufrufen. Andernfalls können Sie den zweiten Controller nicht aufrufen. – ardilgulez