首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用客户端作为put请求一部分发送的express来访问服务器端的数据

如何使用客户端作为put请求一部分发送的express来访问服务器端的数据
EN

Stack Overflow用户
提问于 2018-06-10 02:57:48
回答 1查看 30关注 0票数 2

下面是我的angular http put请求

代码语言:javascript
复制
postRequest(data) : Observable<any>{
    return this.http.post("http://localhost:5050",data).pipe(map(this.dataHandler));
  }

当我进行此调用时,服务器端调用了以下方法:

代码语言:javascript
复制
app.put("/",function(request,response){
    response.send("Put request received successfully");
})

我想在express中检索作为服务器端put请求的一部分从客户端发送的数据。请帮帮忙。提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 03:07:51

首先,如果你想执行一个PUT请求,你应该使用put而不是post

代码语言:javascript
复制
this.http.put(...)

然后在您的服务器端,您可以使用body-parser解析请求数据,并在您的中间件上使用它

代码语言:javascript
复制
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,所以只需使用:

代码语言:javascript
复制
app.use(bodyParser.text());
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50777545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档