3

私はexpressjsを使用して最初のnode.jsサイトを構築しています。

その一部は、 Fitbitから私のサイトのエンドポイントへの 通知を次のように処理しています/api/1/fitbit_update

POST /api/1/fitbit_update HTTP/1.1
Host: myhost.dk
Content-Type: multipart/form-data; boundary=JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR
Content-Length: 374
Connection: keep-alive

--JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR
Content-Disposition: form-data; name="updates"; filename="update1353963418000.json"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: binary

[{"collectionType":"activities","date":"2012-11-26","ownerId":"qw12er23","ownerType":"user","subscriptionId":"112233-activities"}]
--JGUOAeGT3Fjgjcdk6s35F2mPVVyTdzgR--

HTTPリクエストの本文でjsonオブジェクトを解析する必要がありますが、Expressはそれを支援できません。

JSONオブジェクトを取得する方法はありますか?

ミドルウェアの例をいくつか見てきましたが、req.on('someevent')アプローチを使用して実際にコンテンツにアクセスする方法がわかりません。

req.body空のオブジェクトを返します{}

4

4 に答える 4

3

したがって、このリクエストはマルチパートファイルのアップロードであり、関心のあるファイルはJSONドキュメントです。エクスプレスマルチパートの例をご覧ください。あなたは次のようなことをしたいと思うでしょう:

  • connectが保存したファイルを読んでくださいreq.files.updates.path
  • を使用してそのJSONデータをオブジェクトに解析しますJSON.parse
于 2012-11-27T19:01:27.047 に答える
0

req.bodyPOSTルートハンドラーで試してください。

于 2012-11-26T23:40:04.053 に答える
0

express.bodyParser()を追加します

古いバージョンの場合:

app.express.createServer(
  express.cookieParser(), 
  express.bodyParser(), 
  ..... 
);

新しいバージョンの場合:

server.use(express.bodyParser());

次に、req.bodyを使用してbodyにアクセスできます。

于 2012-11-27T01:29:14.573 に答える
0

postメソッドを使用してフォームから送信された値:メールアドレスとパスワード

app.post('/login', function(req, res){

    /* Get Errors of Validates */
    var errors = [];
    req.onValidationError(function(msg) {
        errors.push(msg);
        //console.log('msg: ' + msg);
        return this;
    });

    /* Validates */
    req.sanitize('email').xss();
    req.sanitize('password').xss();

    req.assert('email', 'Range email').len(6, 40);
    req.assert('password', 'Range password').len(6, 20);

    //*****************************************************
    // Value Send Post "password" --> req.body.password 
    //*****************************************************
    var pass_shasum = crypto.createHash('sha256').update(req.body.password).digest('hex');  

....

よろしく。

于 2012-11-27T01:50:34.710 に答える