javascript - 在 expressjs 应用程序中,如何在 API 端点中处理带有 POST 请求的数组?
问题描述
我正在尝试构建 expressjs API 端点。对于我的应用程序目的,对象将来到另一台服务器,它是多个对象。我需要将它转换为一个数组,然后我需要将它推送到我的数据库或其他人。
另外我使用的是 express 4+,所以我没有使用 body-parser,因为它包含在 express 中。
###注意:数据来自另一台服务器,格式为“application/x-www-form-urlencoded”。
我希望数据会像这样的静态数据:
[
{
"name": "As Md Habibullah",
"phone": "+457578424",
"email": "fhhgssa@yahoo.com",
"car_brand": "Mercedes-Benz",
"car_number": "256858"
},
{
"name": "Filippo Masiero",
"phone": "+hgfhfhfg",
"email": "ghjhghjhg@yahoo.com",
"car_brand": "Mercedes-Benz",
"car_number": "25586458"
},
{
"name": "Azad Ahmed",
"phone": "+ghjggffg",
"email": "jghjh@yahoo.com",
"car_brand": "Mercedes-Benz",
"car_number": "2566868"
},
{
"name": "Md Musa",
"phone": "+fgjhfgjfh",
"email": "dfgyfyhfggh@yahoo.com",
"car_brand": "Mercedes-Benz",
"car_number": "256858"
}
]
我假设数据将到达我的端点,它是多个对象,我需要像多个对象一样做一个数组:{}, {}, {}
我想做一个像这样的数组:[{}, {}, {}, {}]
可能吗?
解决方案
如果数据以 JSON 形式出现,但包含在application/x-www-form-urlencoded
, 内容类型中,那么您将不得不为该内容类型使用 express 中间件。这将使您将 JSON 解码为纯文本,然后您必须手动将其解析为 Javascript 对象,如下所示:
// middleware for parsing application/x-www-form-urlencoded content-type
app.use(express.urlencoded({extended: true}));
app.post("/somerouter", (res, res) => {
try {
// parse decoded body text from JSON into Javascript object
let obj = JSON.parse(req.body);
console.log(obj);
// process obj here
res.send("ok");
} catch(e) {
console.log("bad JSON", e);
res.sendStatus(400);
}
});
理想情况下,请求将被发送application/json
,然后您可以使用express.json()
中间件,JSON 将自动解析到您的对象中。
但是,如果您的application/x-www-form-urlencoded
数据只是表单数据,那么它已经为您解析并且已经req.body
作为该对象的属性存在。您只需直接访问它req.body
:
// middleware for parsing application/x-www-form-urlencoded content-type
app.use(express.urlencoded({extended: true}));
app.post("/somerouter", (res, res) => {
console.log(req.body);
// process data in req.body and then send some response
res.send("ok");
});
推荐阅读
- javascript - chrome.debugger.sendCommand 不适用于扩展,但适用于控制台
- javascript - 如何使用sequelize在Mysql中实现搜索部分案例INSENSITIVE?
- sql - Left Join 正在从 MySQL 5.7 中的查询中过滤行,而 where 子句中没有任何左连接列
- npm - Webpack 报告错误的版本号...?
- json - 如何在 Laravel 8 上将选定的复选框 ID 存储到我的数据库中
- node.js - node.js 中的路由配置
- r - facet_wrap (2D) 每行的标签只有一次?
- ruby-on-rails - Rspec如何测试Sidekiq工作?
- vue.js - 如何从 Nuxt 商店导航到错误页面
- python - 用户目录删除器