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

Javascript 如何使用客户端作为put请求的一部分发送的express访问服务器端的数据,javascript,node.js,angular,express,Javascript,Node.js,Angular,Express,下面是我的http put请求 postRequest(data) : Observable<any>{ return this.http.post("http://localhost:5050",data).pipe(map(this.dataHandler)); } 我想检索在express中作为服务器端put请求的一部分从客户端发送的数据。 请帮忙。提前感谢。首先,如果要执行put请求,应使用put而不是post this.http.put(...) 然后,在服

下面是我的http put请求

postRequest(data) : Observable<any>{
    return this.http.post("http://localhost:5050",data).pipe(map(this.dataHandler));
  }
我想检索在express中作为服务器端put请求的一部分从客户端发送的数据。
请帮忙。提前感谢。

首先,如果要执行
put
请求,应使用
put
而不是
post

this.http.put(...)
然后,在服务器端,您可以使用
主体解析器
解析请求数据,并在中间件上使用它

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
for
bodyParser.json()
才能工作,没有它,您的json负载将无法解析,或者
application/x-www-form-urlencoded
for
bodyParser.urlencoded()

bodyParser对象公开各种工厂来创建中间件。 所有中间件都将使用解析的 内容类型请求标头与类型选项匹配时的正文,或 空对象({}),如果没有要分析的主体,则为内容类型 不匹配,或发生错误

在您的特定情况下,您将发送
内容类型:text/plain
,因此只需使用:

app.use(bodyParser.text());

什么是数据?JSON负载,表单数据?你能把请求的屏幕截图放在浏览器开发控制台上吗?数据只是传递给本地数据的一个数值:5 this:ApiServiceService http:http{{u backend:XHRBackend,{u defaultOptions:BaseRequestOptions}proto:Object Closure(./src/app/api service.service.ts)Window GlobalStill,显示请求,根据内容类型的不同,解析在服务器上会有所不同。我只能以json格式或作为url的一部分发送数据?不,您可以任意选择,每种类型的解析都不同。这就是为什么我要你告诉我你是如何发送的。因此,请在开发者控制台上显示请求,或者作为开发者控制台上的请求,转到
xhr
,您将看到请求。以下是请求:curl'-X OPTIONS-H'访问控制请求方法:PUT'-H'来源:'-H'接受编码:gzip,deflate,br'-H'接受语言:en-US,en;q=0.9'-H'用户代理:Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,像Gecko)Chrome/66.0.3359.181 Safari/537.36'-H'接受:/'-H'连接:保持活动状态'--压缩选项是什么,没有数据被发送,显示
PUT
请求。
app.use(bodyParser.text());