下面是我的angular http put请求
postRequest(data) : Observable<any>{
return this.http.post("http://localhost:5050",data).pipe(map(this.dataHandler));
}
当我进行此调用时,服务器端调用了以下方法:
app.put("/",function(request,response){
response.send("Put request received successfully");
})
我想在express中检索作为服务器端put请求的一部分从客户端发送的数据。请帮帮忙。提前谢谢。
发布于 2018-06-10 03:07:51
首先,如果你想执行一个PUT
请求,你应该使用put
而不是post
。
this.http.put(...)
然后在您的服务器端,您可以使用body-parser
解析请求数据,并在您的中间件上使用它
const bodyParser = require('body-parser');
/* ... */
app.use(bodyParser.json()); // If you're sending a JSON payload
app.use(bodyParser.urlencoded({ extended: true })); // application/x-www-form-urlencoded
app.use(bodyParser.text()); // You're sending text/plain
/* ... */
app.put("/",function(request, response){
console.log(request.body); // Data is inside body
response.send("Put request received successfully");
});
您需要发送:Content-Type: application/json
以使bodyParser.json()
工作,如果没有它,您的JSON有效负载将不会被解析,或者application/x-www-form-urlencoded
以用于bodyParser.urlencoded()
bodyParser对象公开各种工厂来创建中间件。当Content-Type请求头部与类型选项匹配时,所有中间件都将使用解析的正文填充req.body属性,或者如果没有正文要解析、Content-Type不匹配或发生错误,则填充一个空对象({})。
在您的特定情况下,您发送的是Content-Type: text/plain
,所以只需使用:
app.use(bodyParser.text());
https://stackoverflow.com/questions/50777545
复制相似问题