为什么我在 Express 中通过 POST 方法无法成功发送数组?

问题描述 投票:0回答:1

我是新来的,正在学习 Express,虽然我认为我走在正确的轨道上,但我目前在

POST
方法上遇到了一些问题。我现在发生的事情如下:

  • 当我向 http 文件发送

    POST
    请求时,我收到一个空对象
    {}
    。另外,我已经通过 Thunder 客户端进行了测试,但是,我收到了 400 错误或另一个 http 错误,

  • 不起作用

    Content-Type: application/json
    位于http文件中方法中的路径下方,

  • GET
    方法效果很好,

  • 这是我一直在使用的代码:

const express = require('express');
const { stories } = require('../data/books.js').infoBooks;

const routerStories = express.Router();
routerStories.use(express.json());

routerStories.post('/', (req, res) => {
    const newBook = req.body;
    stories.push(newBook);
    res.send(JSON.stringify(stories));  
});

我已经尝试解决这个问题好几天了。虽然我做了很多研究,但我还没有弄清楚。 请,我非常感谢您的观点和经验,以便能够完成解决此情况。

javascript node.js express post http-post
1个回答
0
投票

我发现您的代码有一些问题。我假设您按原样粘贴了代码,因此您需要更改以下内容。

1.) 我不认为这里的这一行是有效的 javascript,或者它是否有点奇怪。

const { stories } = require('../data/books.js').infoBooks;
如果
infoBooks
是包含故事的对象,只需导入该对象

2.)您不需要将路由器设置为 json,因为该方法默认存在于路由器上,并且会接受 json 作为有效响应

3.)您可能没有使用不同的路由名称,而另一个路由正在使用相同的字符串文字。

您没有提供足够的信息,因此您如何使用路由器本身可能存在另一个问题,但从您发布的内容来看,这些都是我发现的所有问题。希望有帮助!

import {infoBooks} from "../data/books.js"
import express from "express";
const router = express.Router();

routerStories.post('/createNewBook', (req, res) =\> {
    const newBook = req.body;
    if(!newBook){
       res.status(400).json({message: "invalid arguments"})
       return
    }
    infoBooks.stories.push(newBook);
    //we don't need to set status here because by default the response will be 200
    res.json({infoBooks.stories});
    return 
})
© www.soinside.com 2019 - 2024. All rights reserved.