swift请求正文为空



我在向我的api发送post请求时遇到问题。我将应用程序传输安全设置为允许本地联网。问题是请求主体总是空的

这是我的swift代码

func createClient(client:Client) {
guard let url = URL(string: "http://localhost:3003/client_create") else {
print("Could not create URL.")
return
}
let requestLang: [String: Any] = ["nom_complet": client.nom_complet]
let requestBody = try? JSONSerialization.data(withJSONObject: requestLang)
var urlRequest = URLRequest(url: url)
urlRequest.httpBody = requestBody
urlRequest.httpMethod = "POST"
urlRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Content-Type")
urlRequest.setValue("application/json; charset=utf-8", forHTTPHeaderField: "Accept")
let session = URLSession.shared
let task = session.dataTask(with: urlRequest) {
data, response, error in
guard let data = data, error == nil else {
print(error?.localizedDescription ?? "No data")
return
}
let responseJSON = try? JSONSerialization.jsonObject(with: data, options: [])
if let responseJSON = responseJSON as? [String: Any] {
print(responseJSON)
}
}
task.resume()
}

这是我的节点js代码

const express = require('express')
const app = express()
const mysql = require('mysql')
const bodyParser = require('body-parser')
app.use(bodyParser.urlencoded({extended: true}) )
app.use(express.static('./public'))
function getConnection() {
return mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'expertDB'
})
}
var publicDir = require('path').join(__dirname,'/public'); 
app.use(express.static(publicDir));

app.post('/client_create', (req,res) => {
try{
const nom_complet = req.body.nom_complet
console.log("nom_complet: "+nom_complet)
console.log("body "+req.body)
const queryString = "INSERT INTO Client (nom_complet) VALUES (?)"
const connection = getConnection()
connection.query(queryString,[nom_complet],(err,results,fields) => {
if (err) {
console.log("failed to connect to server")
console.log(err)
res.sendStatus(500)
return 
}
console.log('inserted a new client with id: ',results.insertedId);
res.end()
})
}catch(err){
console.log(err)
}
})

req.body返回空,req.body.nom_complet返回未定义知道怎么修吗?

在我的案例中,这有所帮助:

app.use(bodyParser.json({ type: 'application/json' }))

您可以尝试删除指定应用程序/json的UTF8字符串,如果这在中不起作用,则只保留应用程序/json

最新更新