POST有效负载信息位于请求对象中的哪个位置?

时间:2016-12-20 16:22:32

标签: html json node.js post

我原以为这是一个微不足道的问题,答案是“在体内”......但似乎并非如此。

举个例子,我们有一个网站,它将收集数据,然后将POST发送到将收到信息的监听网站:

以下是POST网站的html:

<html>
<head>
<title>Form POST Site</title>
<script type="text/javascript">
function submitForm(){document.getElementById('form1').action = document.getElementById('server').value;}
</script>
<style type="text/css">
.style1 {width: 100%;}
.style2 {width: 429px;}
#server { width: 254px; }
</style>
</head>
<body>
<H3>Form POST Site</H3>
<form method="POST" id="form1" onSubmit="submitForm()">
<table class="style1">
<tr>
<td class="style2">
Username:</td>
<td>
<input type="text" name="username" value="" /></td>
</tr>
<tr>
<td class="style2">
Server: </td>
<td>
<input type="text" id="server" name="server" value="http://" /></td>
</tr>
<tr>
<td class="style2">
<input type="submit" name="submittable" value="Go" /></td>
<td>
</td>
</tr>
</table>
</form>
</body>

这是侦听器网站的node.js代码:

/*global require,console*/

var xml = require('xml');
var express = require('express');
var bodyParser = require ('express-xml-bodyparser');
var app = express();

app.use(bodyParser()); // add a middleware (so that express can parse request.body's json)

app.post('/', (request, response) => {
  /*response.send(request.body);*/
  console.log(request.body);
  response.json("received");
});

app.listen(1123);

因此,访问POST网站,并将侦听器的IP地址设置为目标,我们可以确切地看到正在发送的内容。

这就是令我困惑的事情。 request.body是空的。

不仅如此,当我查看整个请求时,我看不到我为“用户名”输入的文本值。

我希望能够在我的node.js代码中收到“用户名”文本字符串并对其执行某些操作...但我不知道在哪里可以找到它。

非常感谢任何协助。

1 个答案:

答案 0 :(得分:1)

通常," px"为空。 request.body(或可能是相关模块)根据内容类型和压缩来解析请求主体,并将主体放入body-parser

您使用的request.body可以解析express-xml-bodyparser中的xml,而不是常规的POST数据form。因此,您可以使用url-encoded并获取body-parser字段。

e.g。

form