javascript - 如何在不使用正文解析器的情况下获取 POST 正文
问题描述
module.exports=function(app){
//app is passed in from app.js
//app is a express application
var data=[
{item:"cheese"},{item:"milk"},{item:"strawberrys"}
]
app.get('/todo',function(req, res){
res.render('todo',{data:data});
});
app.post('/todo',function(req, res){
var data="";
req.on('data', function(chunk){
data+=chunk;
});
req.on('end', function(){
console.log(data);
})
});
}
关于上面代码的几个问题,“数据”是一个可以设置流的事件,并且块函数以块的形式返回流吗?此外,当我从“结束”事件中打印出数据时,它给了我 item=eggs,而我通过的对象是 {item:"eggs"}。为什么它没有给我对象?同样在“数据”事件中,它在字节缓冲区中返回它,但在“结束”事件中,它作为对象返回?
解决方案
这取决于post
内容类型
如果您使用以下方式发布:content-type: application/json
它将显示 JSON 数据。例子:
POST /todo HTTP/1.1
Host: localhost:8080
Content-Type: application/json
{"key":"value"}
如果您发布使用:content-type: application/x-www-form-urlencoded
它将显示key1=value1&key2=value2
等。如果您不使用application/json
请求将是这样的。
例子:
POST /todo HTTP/1.1
Host: localhost:8080
Content-Type: application/x-www-form-urlencoded
key=value
推荐阅读
- c - 错误:函数“sysconf”的隐式声明
- python - Python POST multipart/form-data 请求 Postman 的不同行为
- google-tag-manager - Google 跟踪代码管理器会话结束
- python - 在 MySQL 数据库表列中插入带有 PyQt5 的图像文件
- c++ - 表达式:字符串下标超出控制台缓冲区范围
- r - 如何在 Shiny R 中垂直对齐多个单选按钮列?
- sql - BigQuery - 选择序列中的最后一个非空值
- c++ - 用两个不同的模板参数定义一个函数
- react-native - 如何在 React Native 中使用 Sentry 自定义 index.js 的位置?
- kubernetes - 使用其他规则检查 k8s 命名空间中的注释的 OPA Rego 规则