尝试发送 json 对象时,fetch api 如何与 express 一起工作

How does the fetch api work with express when trying to send a json object

我有一个系统,其中有一个 nodejs 应用程序:

app.post('/action', (req, res) => {
 ...
const option = req.body.option
 ...
switch (option) {
    case 'getinfo':
        objectToSend = {"foo": "bar"}
        // i tried using
        res.json(objectToSend)
        // and
        res.send(JSON.stringify(objectToSend))
        // but neither got me anywhere
    break
}

还有一个像这样使用 fetch 发送 post 请求的网站(infoModal 是我用来显示数据的函数)(我在 discord 上收到了 action 函数,从那时起就一直在使用它,但是我从来不需要对回复做任何事情)

let action = async (i) => {
    res = await fetch("/action", {
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        method: "POST",
        body: JSON.stringify(i)
    })
    return await res.json
}
action({
            option: 'getinfo'
        }).then(j => {
            infoModal(j.foo,'ok')
        })

我无法真正修复后端或前端,因为两者都必须为我工作以确认它有效...

编辑: 这些是我的要求、用途和设置:

require('dotenv').config()
 ...
const express = require('express')
const path = require('path')
var bodyParser = require('body-parser')
let ejs = require('ejs')
const fs = require('fs')
var cookieParser = require('cookie-parser')
var colors = require('colors')

const app = express()

app.use(bodyParser.json())
app.use(cookieParser())

app.set('views', path.join(__dirname, 'frontend'))
app.set('view engine', 'ejs')

一个明显的错误是没有执行 Fetch 响应的 jeson() 方法。而且,虽然无害,但第二个 await 语句并不是真正必要的 - 异步函数无论如何都包装了承诺中返回的内容。

return res.json();

如果不行 -

  1. 看看你的开发者控制台是怎么说的。它应该为您提供有关请求的大量信息。如果出现错误,请按照信息(响应代码、任何错误消息等)尝试确定问题所在。

  2. 首先使用 POSTMAN 等 rest 客户端验证您的后端。当您知道它可以很好地响应适当的请求时,您可以放心地尝试您的前端,并进一步了解应该如何处理响应。