Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 无法在节点Js中发布/api/注册_Angularjs_Node.js_Express - Fatal编程技术网

Angularjs 无法在节点Js中发布/api/注册

Angularjs 无法在节点Js中发布/api/注册,angularjs,node.js,express,Angularjs,Node.js,Express,我是新来这里的,我在postman中遇到了无法post/api/注册错误,在控制台中找不到404,我已经检查了所有可能的问题答案。请尽快帮助我。 提前谢谢 auth.controller.js文件 var express = require ('express'); //EXPRESS Package var route = express.Router(); //define our app using express // var userModel = require('../mode

我是新来这里的,我在postman中遇到了无法post/api/注册错误,在控制台中找不到404,我已经检查了所有可能的问题答案。请尽快帮助我。 提前谢谢

auth.controller.js文件

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;
========================================================================= 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;
当你使用

app.use('/api/register', require('./controllers/auth.controller'));
您的应用程序将所有指向
/api/register
的内容路由到
require('./controllers/auth.controller')
。然后
require('./controllers/auth.controller')
检查url的其余部分
/api/register
/api/login
,如果路由器获得匹配,则将请求路由到相应的中间件

换句话说,您需要发布到/api/register/api/register,以便访问所需的中间件

要快速解决此问题,请执行以下操作:

你应该删除

app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
并将其替换为:

app.use('/', require('./controllers/auth.controller'));
app.use('/api', require('./controllers/auth.controller'));
更好的方法是:

你应该删除

app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
并将其替换为:

app.use('/', require('./controllers/auth.controller'));
app.use('/api', require('./controllers/auth.controller'));
在app.js和
auth.controller.js
中,您应该替换:

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);
    // });
});
与:

当你使用

app.use('/api/register', require('./controllers/auth.controller'));
您的应用程序将所有指向
/api/register
的内容路由到
require('./controllers/auth.controller')
。然后
require('./controllers/auth.controller')
检查url的其余部分
/api/register
/api/login
,如果路由器获得匹配,则将请求路由到相应的中间件

换句话说,您需要发布到/api/register/api/register,以便访问所需的中间件

要快速解决此问题,请执行以下操作:

你应该删除

app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
并将其替换为:

app.use('/', require('./controllers/auth.controller'));
app.use('/api', require('./controllers/auth.controller'));
更好的方法是:

你应该删除

app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
app.use('/api/register', require('./controllers/auth.controller'));
app.use('/api/login', require('./controllers/auth.controller'));
并将其替换为:

app.use('/', require('./controllers/auth.controller'));
app.use('/api', require('./controllers/auth.controller'));
在app.js和
auth.controller.js
中,您应该替换:

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);
    // });
});
与:


/api/register/api/register/
是您定义的路由。
/api/register/api/register/
是您定义的路由。太好了。。非常感谢。我从没想过。太神了但是还有一件事,如果我有更多的控制器用于更多的动态页面,那么它将一直在auth.controller中检查,或者它将直接找到目标控制器完全取决于你的应用程序如何使用其他控制器。在评论中说起来太长了,但这里有一个简短的总结:您有那些接受req和res的函数,对吗?它们还有一个参数:next。如果一条路由有多个控制器,并且在第一个控制器的末尾调用“next();”,则可以通过这种方式调用第二个控制器。否则你不能呼叫第二个控制器太好了。。非常感谢。我从没想过。太神了但是还有一件事,如果我有更多的控制器用于更多的动态页面,那么它将一直在auth.controller中检查,或者它将直接找到目标控制器完全取决于你的应用程序如何使用其他控制器。在评论中说起来太长了,但这里有一个简短的总结:您有那些接受req和res的函数,对吗?它们还有一个参数:next。如果一条路由有多个控制器,并且在第一个控制器的末尾调用“next();”,则可以通过这种方式调用第二个控制器。否则,您无法调用第二个控制器。