2016-12-20 6 views
0

私はこれが些細な質問だったと思っていたでしょうし、その答えは "体の中"であると思っていましたが、それは事実ではないようです。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は空です。

リクエストの全体を見ると、「username」に入力したテキスト値はどこにも表示されません。

私はnode.jsコードで "username"という文字列を受け取って、それと何かをしたいと思っていますが、どこから探しているのかわかりません。

ご協力いただければ幸いです。

+0

Ok。だから私はそれを得る。しかし、私が使用するボディパーサー(と私は2つの異なるバージョンを試しました)とは関係なく、私はまだ空のボディ値を取得します... – rucker

+0

あなたの場合、あなたはURLエンコードされたボディを投稿しています。したがって、あなたが ' app.use(bodyParser.urlencoded({extended:false})) 'を使用しなければならないことを解析するには' –

+1

'body-parser'ではなく' express-xml-bodyparser'を使用していることに気づきました。だから、 'request.body'は空です。 –

答えて

1

通常、request.bodyは空です。 body-parser(またはおそらく関連するモジュール)は、コンテンツタイプと圧縮に応じて要求本体を解析し、本体をrequest.bodyに置きます。

あなたは、通常のformデータ通常url-encodedPOSTxmlを解析することができexpress-xml-bodyparserを使用しますが、されていません。したがって、body-parserを使用し、formフィールドを取得することができます。

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


app.use(xmlbodyParser()); // add a middleware (so that express can parse request.body's xml) 
app.use(bodyParser.urlencoded({ extended: false })) //add a middle (so that express can parse request.body's urlencoded dataa) 

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

app.listen(1123); 
関連する問題