javascript - 如何在 NodeJs 中使用 express 从请求中提取正文?
问题描述
我正在express
为我的应用程序使用 Node.Js 和框架。
我构建了 HTML 表单,提交后我无法收到form
有关 API 请求的数据。
我的 HTML:
<form method="post" action="/create">
<input type="text" name="user.name" />
<input type="text" name="user.email" />
<input type="text" name="user.address.city" />
<input type="text" name="user.address.land" />
<input type="submit" value="Submit">
</form>
JSON 对象应该在我的 API 中获得:
{
"user": {
"name": "toto",
"email": "toto@mail.com",
"address": {
"city": "yyyyy",
"land": "zzzz"
}
}
}
如何使用 Node.js、Express 4 做到这一点,是否还有另一个库呢?
解决方案
您可以准备自己的中间件,使用 body-parser 解析传入的表单数据urlencoded()
并将其转换为结构化 JSON:
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
function setDeepValue(path, obj, value) {
const tokens = path.split('.');
const last = tokens.pop();
for (const token of tokens) {
if (!obj.hasOwnProperty(token)) {
obj[token] = {};
}
obj = obj[token];
}
obj[last] = value;
}
app.use(bodyParser.urlencoded(), function(req, res, next) {
let obj = {};
for (const key in req.body) {
setDeepValue(key, obj, req.body[key]);
}
req.body = obj;
next();
});
app.post('/create', function(req, res) {
console.log(req.body)
})
推荐阅读
- mongodb - 猫鼬中的 FindOneAndUpdate 子文档数组删除文档而不是更新
- sql - 查询雪花中的半结构化字段
- r - R Formattable -> 导出的 .png 和导出的 html 小部件不匹配
- javascript - 尝试使用 javascript/jquery 使选择器动态化
- kubernetes - Cilium-Istio 可以使用 Istio 操作符部署吗?
- unity3d - unity Cinemamachine SmoothPath 问题
- python - 重命名文件序列
- mysql - 如何在 MySQL 中合并两个查询的结果
- python - aiohttp 限制每分钟新连接数
- java - Collections.sort 没有给出预期