尝试发送 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();
如果不行 -
看看你的开发者控制台是怎么说的。它应该为您提供有关请求的大量信息。如果出现错误,请按照信息(响应代码、任何错误消息等)尝试确定问题所在。
首先使用 POSTMAN 等 rest 客户端验证您的后端。当您知道它可以很好地响应适当的请求时,您可以放心地尝试您的前端,并进一步了解应该如何处理响应。
我有一个系统,其中有一个 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();
如果不行 -
看看你的开发者控制台是怎么说的。它应该为您提供有关请求的大量信息。如果出现错误,请按照信息(响应代码、任何错误消息等)尝试确定问题所在。
首先使用 POSTMAN 等 rest 客户端验证您的后端。当您知道它可以很好地响应适当的请求时,您可以放心地尝试您的前端,并进一步了解应该如何处理响应。