javascript - Nodejs/express 应用程序的 POST 404

标签 javascript node.js express

我一直在关注在线教程,但针对我自己的项目对其进行了修改。对 api/posts 的 Get 请求工作正常,但 Post 请求会导致 404 和“错误:发送后无法设置 header 。”。我不明白这是为什么。

'use strict'

const express = require('express');
const mongoose = require('mongoose');
const bodyParser = require('body-parser');
const Post = require('./models/post_schema');

const app = express();
const router = express.Router();

const port = process.env.API_PORT || 3000;

mongoose.connect('mongodb://REDACTED');

app.use(bodyParser.urlencoded({extend: true}));
app.use(bodyParser.json());

app.use(function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.setHeader('Access-Control-Allow-Credentials', 'true');
    res.setHeader('Access-Control-Allow-Methods', 'GET,HEAD,OPTIONS,POST,PUT,DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'Access-Control-Allow-Headers, Origin,Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers');
    res.setHeader('Cache-Control', 'no-cache');
    next();
});

router.get('/', function(req, res) {
    res.json({ message: 'API Initlialised'});
});

router.route('/posts')
    .get(function(req, res) {
        Post.find(function(err, posts) {
            if (err) {res.send(err)}
            res.json(posts)
        })
    })
    .post(function(req, res) {
        const post = new Post();
        post.title = req.body.title;
        post.text = req.body.text;

        post.save(function(err) {
            if (err) {res.send(err)};
            res.json({ message: 'Post added!'});
        });
    });



app.use('/api', router);

app.listen(port, function() {
    console.log(`api running on port ${port}`)
})

我已经阅读了 Express 文档,但找不到解决方案。任何帮助将不胜感激。

最佳答案

这可能会成功!

router.route('/posts')
    .get(function(req, res) {
        Post.find(function(err, posts) {
            if (err) return res.send(err);
            return res.json(posts)
        })
    })
    .post(function(req, res) {
        const post = new Post();
        post.title = req.body.title;
        post.text = req.body.text;

        post.save(function(err) {
            if (err) return res.send(err);
            return res.json({ message: 'Post added!'});
        });
    });

关于javascript - Nodejs/express 应用程序的 POST 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671483/

相关文章:

javascript - 具有 'hasOne' 关联的空 ExtJS 模型实例

node.js - 什么参数被传递给 Mongoose 回调

javascript - Ajax Post与express js获取req参数错误

javascript - 触发angular2中元素的焦点

javascript - 无法更新具有相同 id 的多个 div

javascript - HTML 检查元素更改布局

node.js - web3.eth.getBlockNumber 返回 { [函数 : get] request: [Function: bound]}

node.js - 是否有比我进行高级测试更好的选择?

node.js - express.js 中 Ajax 请求的错误处理

jquery - 运行node.js里程表中间件