在Express中通过POST方法高效地发送数组的问题
P粉207969787
P粉207969787 2023-09-16 21:10:57
0
1
546

我在这里是新手,正在学习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));  
});

我已经尝试解决了几天。尽管我已经做了很多研究,但我还是无法解决它。 请您给予您的观点和经验,以便能够解决这个问题。

P粉207969787
P粉207969787

全部回复(1)
P粉543344381

我在你的代码中发现了一些问题。我假设你粘贴了原始代码,所以这里是你需要改变的地方。

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 
})
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!