在Angular中发送HTTP POST请求后,如果在服务器端(如Node.js)中,req.body为空的问题通常是因为请求头中的Content-Type不正确或者请求体未正确解析导致的。下面是一些可能的解决方法。
import { HttpClient, HttpHeaders } from '@angular/common/http';
...
// 设置请求头
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
// 发送POST请求
this.http.post(url, data, httpOptions).subscribe(
response => {
console.log(response);
},
error => {
console.error(error);
}
);
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
// 解析请求体
app.use(bodyParser.json());
// 处理POST请求
app.post('/api/endpoint', (req, res) => {
console.log(req.body); // 确保req.body不为空
res.send('POST request received');
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
import { HttpClient, HttpHeaders } from '@angular/common/http';
...
const data = {
name: 'John',
age: 25
};
// 序列化数据
const jsonData = JSON.stringify(data);
// 设置请求头
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json'
})
};
// 发送POST请求
this.http.post(url, jsonData, httpOptions).subscribe(
response => {
console.log(response);
},
error => {
console.error(error);
}
);
使用上述方法之一,应该能够解决Angular中HTTP POST请求发送后req.body为空的问题。请根据您的具体情况选择适合您的解决方法。