2017-02-12 3 views
1

私は理解できないボディーセーラーに問題があります。Express bodyParserが正しく動作しません

数週間前にExpressでREST APIを作成し、bodyParserを使用してクライアントからJSONデータを読み取りました。すべてがうまくいきましたが、今朝私のアプリケーションを起動しようとしましたが、私のreq.body.dataはすべて定義されていませんでした。実際、ボディは{}と同じです。

はここに私の設定です:

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

そして私は私のルートを設定します。私はあなたがこの順序で宣言しなければならないことを見てきました。つまり、あなたのルートの前にbodyParserがあり、これが私の行うことです。私はそれがバージョンの問題だと思ったが、いくつかのアップグレード後に問題はまだ残っている。

私はHttpRequesterを使用してクライアントをシミュレートします。今朝まですべてがうまくいった。送信されたデータの

例:

{ 
    "username": "david", 
    "password": "bowie", 
    "email": "[email protected]" 
} 

そして応答するためのコードがある:checkCreateUserRequestで

// Creation of a user. 
router.post('/create', function(req, res) { 

    // We check current mistakes like username or password empty. 
    if (!userhelper.checkCreateUserRequest(req, res)) { 
    return; 
    } 

    // Save the user in BDD 
} 

app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 
app.use(logger('dev')); 
app.use(expressValidator()); 
app.use(cookieParser()); 

app.use('/users', users); 

次いでユーザに私はユーザーを作成します私はこれをする:

if (req.body.username == null || req.body.password == null ||  req.body.email == null) { 
res.status(400).json({message: "malformed request", code: 1}); 
return false; 

}

ユーザ名が、たとえば空の場合、私は、チェックのような他のことをやるが、私はそれを貼り付けることが重要だとは思いません。あなたはJSONリクエストを使用している場合

ご回答をありがとう、あなたを、私の悪い英語のため申し訳ありません...

+0

送信しているサンプルデータでコードスニペットを追加できますか? –

+0

あなたの回答をありがとう、私は自分の投稿を更新しました – xavatic

答えて

2

あなたは正しいHTTPヘッダーを設定することができます。

コンテンツタイプ:application/json

+0

あなたは正しいです、いくつかの調査の後、私は自分のRESTクライアントが正しく構成されていないことがわかりました。私はfirefoxによって提供されるデフォルトのアドオンを使用し、私はそれを正しく設定しなかったと思う。郵便配達員と角張ったアプリケーションで、それは動作します。ご回答有難うございます – xavatic

関連する問題