我在這裡是新手,正在學習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 })