如何在单个REST API POST请求中发送多个JSON对象?
POST多JSON对象/实体模型传递实现方案
前端请求示例
// 需传递的多个实体数组 const entityList = [ { groupid: 1, device_id: "dev_001", nearbytime: 1695000000, distance: 50, lat: 31.2304, lon: 121.4737, user_id: "user_1001" }, { groupid: 1, device_id: "dev_002", nearbytime: 1695000010, distance: 72, lat: 31.2307, lon: 121.4741, user_id: "user_1002" } ] // 发送POST请求 fetch('/api/token/batch-add', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(entityList) })
后端逻辑适配(src -> modelfile改造)
原代码仅支持单条实体插入,改造为批量插入逻辑如下:
const entityList = req.body const params = [] const placeholder = [] // 遍历实体数组拼接SQL参数和占位符 entityList.forEach(item => { placeholder.push('(?, ?, ?, ?, ?, ?, ?)') params.push( item.device_id, item.user_id, item.groupid, item.nearbytime, item.distance, item.lat, item.lon ) }) const sql = `INSERT INTO tb_token (device_id, user_id, groupid, nearbytime, distance, lat, lon) VALUES ${placeholder.join(',')}` return new Promise ((resolve, reject) => { connection.query (sql, params, (err, response) => { if (!err) { resolve (response); } else { reject (err); } } ); });
注意事项
- 请求头必须携带
Content-Type: application/json,否则后端无法正确解析JSON格式请求体 - 如果需要同时传递公共参数,可以将请求体调整为外层包裹对象的格式:
{"operator": "admin", "data": [实体数组]},后端从req.body.data获取实体列表即可 - 生产环境建议添加参数合法性校验,避免非法值导致SQL执行异常
内容的提问来源于stack exchange,提问作者user11204145
相关产品推荐
相关产品推荐

