Express JS节点框架没有响应post()请求

时间:2017-06-08 12:23:46

标签: node.js express post

我正在关注一个博客,用Express框架构建我的第一个节点API。但是POST请求没有返回响应。

const app = express();

require('./app/routes')(app, {});
app.listen(port, () => {
  console.log('We are live on ' + port);
});

module.exports = function(app, db) {
  console.log('reached2');
  app.post('/notes', (req, res) => {
    // You'll create your note here.
    console.log('reached3');
    res.send('Hello');
    //res.end();;
  });
};

以下是我的控制台日志

reached1
reached2
We are live on 8000

以下是我的依赖项

"dependencies": {
    "body-parser": "^1.17.2",
    "express": "^4.15.3",
    "mongodb": "^2.2.28"
  },
  "devDependencies": {
    "nodemon": "^1.11.0"
  }

我正在使用postman客户端进行POST。

enter image description here

我尝试用匿名函数替换胖箭头操作符,但仍无效。

请在此代码中指出问题。

2 个答案:

答案 0 :(得分:0)

如果你想把你的路线保存在一个单独的文件中(这是相当标准的做法),那么你需要返回路由器并告诉快递应用程序使用它。

<强> app.js

const express = require('express');
const routes = require('./routes')({});

const app = express();

app.use('/', routes);

app.listen(8080, () => {
    console.log('Listening on 8080');
})

<强> routes.js

const express = require('express');

module.exports = (db) => {

    const router = express.Router();

    router.post('/notes', (req, res) => {
        res.send('Hello!');
    })

    // all your other routes here!

    return router;

}

或者,如果您想在不使用express.Router()的情况下执行此操作,则可以传递app

<强> app.js

const express = require('express');

const app = express();

require('./routes')(app, {});

app.listen(8080, () => {
    console.log('Listening on 8080');
})

<强> routes.js

module.exports = (app, db) => {

    app.post('/notes', (req, res) => {
        res.send('Hello!');
    })

}

答案 1 :(得分:-1)

您可以直接使用它,而不是在函数中编写路径。以下是相同的代码段:

const app = express();
app.listen(port, () => {
    console.log('We are live on ' + port);
});

app.post('/notes', (req, res) => {
    // You'll create your note here.
    res.send('Hello');
});