在Express中透過POST方法有效率地傳送數組的問題
P粉207969787
P粉207969787 2023-09-16 21:10:57
0
1
494

我在這裡是新手,正在學習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學習者快速成長!