我在这里是新手,正在学习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粉5433443812023-09-17 00:59:05
我在你的代码中发现了一些问题。我假设你粘贴了原始代码,所以这里是你需要改变的地方。
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 })