javascript - POST上的404 for nodejs/express应用

标签 javascript node.js express

我一直在网上学习一个教程,但是为了我自己的项目修改了它。对api/posts的get请求工作正常,但post请求会导致404和“错误:发送请求后无法设置头。”我搞不懂这是为什么。

'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 - POST上的404 for nodejs/express应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48671483/

相关文章:

javascript - 每个 HTTP/Session 请求的全局数据?

javascript - Express JS Router无法正常工作

mysql - 我需要通过fs.readfile的图像文件,我想将二进制数据存储在MySQL表中。我该怎么做

javascript - 如何获取PHP脚本以删除JSON文件中的对象?

javascript - 来自十六进制的字符串,没有编码

javascript - CSS文件之后而不是外部文件之后的本地脚本下载

node.js - 如何访问AWS API Gateway的path参数?

javascript - EJS 和 jquery 不加载 javascript 引用

javascript - 我使用sockets.io创建了一个简单的聊天室,如何防止XSS攻击?

javascript - 附加到由文本溢出省略号缩短的字符串