我用微服务构建了nestjs项目,我正在尝试从HTTP方法发送主体数据"删除";并从req.body获取数据。该数据到达时为空。
nestjs项目
await this.httpServiceInstance
.delete(`deleteData`, {
data,
})
微服务项目
路由
app.delete("/deleteData", endpoint(deleteData));
函数删除数据
module.exports = async (req) => { console.log(req.body) /* more code*/ }
它是打印空对象{}
请在您的配置中以这种方式设置$httpProvider
:
$httpProvider.defaults.headers.delete = { "Content-Type": "application/json;charset=utf-8" };
然后调用delete
请求:
await this.httpServiceInstance
.delete(`xxxxx`, {
data,
})
我认为您使用的是express
,尽管我没有看到它被明确说明。它需要一个主体解析器,例如:
const express = require('express')
const app = express();
const port = process.env.PORT || 3000;
// parse body as JSON, puts object into req.body
app.use(express.json());
app.route('/deleteData')
.all((req, res) => {
console.log(req.method, req.body);
res.json(req.body);
});
app.listen(port, function() {
console.log('Server started on port: ' + port);
});
启动服务器,然后测试:
curl -X DELETE --data '{"foo": "bar"}' -H 'Content-Type: application/json' http://localhost:3000/deleteData
服务器控制台显示:DELETE { foo: 'bar' }
,将{"foo":"bar"}
返回给客户端。