我试着用Fetch() API来发布text/plain:

fetch('/test', {
    method: 'post',
    headers: {
      'Content-Type': 'text/plain'
    },
    body: "this is a test"
  })
 .then(response => response.text())
 .then(body => {
    console.log(body)
 })

这是处理请求的路由

router.post('/test',(req,res)=>{
    console.log(req.body)
    res.send('OK')
})

然而,console.log(req.body)的输出是{}.

我想问题出在body:之后的代码,我不知道发布文本/纯数据的正确方式是什么.

推荐答案

要使用FETCH()在POST请求中发送文本/纯文本数据,只需传递一个字符串作为主体值,就像在代码中所做的那样.但是,要在服务器端正确解析请求正文,您需要使用支持解析纯文本的中间件.

例如,您可以使用Express应用程序中的正文解析器中间件来解析文本/纯文本请求正文.以下是您的服务器端代码的更新版本,其中包括主体解析器中间件:

const express = require('express');
const bodyParser = require('body-parser');

const app = express();

app.use(bodyParser.text());

app.post('/test',(req,res)=>{
  console.log(req.body);
  res.send('OK');
});

app.listen(3000, () => {
  console.log('Server started on port 3000');
});

在这段代码中,bodyParser.text()用于解析纯文本请求正文.此中间件将req.Body属性设置为解析的文本值.

准备好这个中间件后,您的FETCH()代码应该可以正常工作.

Javascript相关问答推荐

如何在react + react路由域名中使用DeliverBrowserRouter?

使用redux-toolet DelivercThunks刷新访问令牌

使用print This时, map 容器已在LeafletJS中初始化

使用JavaScript在ionic Web应用程序中更新.pane和.view的背景 colored颜色

使用AJX发送表单后,$_Post看起来为空

传递一个大对象以在Express布局中呈现

调用removeEvents不起作用

使用JavaScript重新排序行

Chrome是否忽略WebAuthentication userVerification设置?""

我的服务工作器没有连接到我的Chrome扩展中的内容脚本.我该怎么解决这个问题?

ChartJs未呈现

更改预请求脚本中重用的JSON主体变量- Postman

有条件重定向到移动子域

如何将未排序的元素追加到数组的末尾?

在JS中动态创建对象,并将其追加到HTML表中

传递方法VS泛型对象VS事件特定对象

JS Animate()方法未按预期工作

无法重定向到Next.js中的动态URL

按特定顺序将4个数组组合在一起,按ID分组

如何在每隔2分钟刷新OKTA令牌后停止页面刷新