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

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

我是新来的,我正在学习Express,虽然我认为我走在正确的轨道上,但我目前在POST方法上遇到了一些问题。我现在发生的事情如下:

  • 当我在http文件中运行POST方法的Send Request时,我收到一个空对象“{}”。另外,我已经通过 Thunder 客户端进行了测试,但是,我收到错误 400 或其他错误,

  • http 文件中方法中的路径下方的“Content-Type: application/json”不起作用,

  • 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));    
    

    });`

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

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.