You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift发送POST请求的JSON数据无法被Node.js服务端正常接收问题

问题修复方案

1. Swift端缺失JSON请求头配置

当前代码已完成JSON序列化并写入请求体,但没有告知服务端请求体的格式是JSON,服务端默认不会按JSON规则解析请求内容。需要在设置httpBody的代码块中添加Content-Type请求头:
修改后的body处理代码:

if let body = body {
    do {
        // 生产环境可去掉.prettyPrinted选项减少请求体积
        let jsonData = try JSONSerialization.data(withJSONObject: body, options: .prettyPrinted)
        request.httpBody = jsonData
        // 新增请求头配置
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")
    } catch {
        print(error.localizedDescription)
    }
}

同时建议把原来的强制解包改成可选绑定,避免意外崩溃。

2. Node.js端缺少JSON请求体解析中间件

Express框架默认不会自动解析POST请求的JSON格式请求体,需要手动启用内置的JSON解析中间件,需要在你的路由定义前添加如下配置:

// 放在所有app.post、app.get等路由定义之前
app.use(express.json())

如果你使用的是4.16.0版本之前的Express,需要先安装body-parser包,再引入使用:

const bodyParser = require('body-parser')
app.use(bodyParser.json())

修改完成后Node.js端即可正常读取req.body中的JSON数据。

可选验证步骤

  • 可在Swift侧序列化完成后,将jsonData转为String打印,确认序列化结果符合预期
  • 可在Node.js的接口中先打印req.headers['content-type'],确认请求头已正常携带application/json

内容的提问来源于stack exchange,提问作者John Sorensen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:54:03