6

以下のparse.comRESTAPIの例を複製しようとしています。

curl -X GET \
  -H "X-Parse-Application-Id: APP_ID" \
  -H "X-Parse-REST-API-Key: API_KEY" \
  -G \
  --data-urlencode 'where={"playerName":"John"}' \
  https://api.parse.com/1/classes/GameScore

そこで、Stackoverflowで見つかった例に基づいて、次の関数を実装しました。

var https = require("https");
exports.getJSON = function(options, onResult){

    var prot = options.port == 443 ? https : http;
    var req = prot.request(options, function(res){
        var output = '';
        res.setEncoding('utf8');
        res.on('data', function (chunk) {
            output += chunk;
        });

        res.on('end', function() {
            var obj = JSON.parse(output);
            onResult(res.statusCode, obj);
        });
    });

    req.on('error', function(err) {
    });

    req.end();
};

私はそのように呼んでいます:

var options = {
host: 'api.parse.com',
port: 443,
path: '/1/classes/GameScore',
method: 'GET',
headers: {
    'X-Parse-Application-Id': 'APP_ID',
    'X-Parse-REST-API-Key': 'APP_KEY'
}
};

rest.getJSON(options,
    function(statusCode, result)
    {
        // I could work with the result html/json here.  I could also just return it
        //console.log("onResult: (" + statusCode + ")" + JSON.stringify(result));
        res.statusCode = statusCode;
        res.send(result);
    });

私の質問は、「-data-urlencode'where = {"playerName": "Sean Plott"、 "cheatMode":false}」ビットを送信するにはどうすればよいですか?パスを設定してパスに追加してみましたそのようなオプション:'/ 1 / classes / GameScore?playerName = John、しかしそれは機能しませんでした、私はジョンからのものではなく、すべてのゲームスコアを受け取りました

4

1 に答える 1

11

次のようなオプションでパスを設定して、パスに追加してみました。/1/classes/GameScore?playerName=John

whereJSON値全体の値を持つキー/名前として期待しているようです:

/1/classes/GameScore?where=%7B%22playerName%22%3A%22John%22%7D

あなたはこれをで得ることができますquerystring.stringify()

var qs = require('querystring');

var query = qs.stringify({
    where: '{"playerName":"John"}'
});

var options = {
    // ...
    path: '/1/classes/GameScore?' + query,
    // ...
};

// ...

オプションでJSON.stringify()、オブジェクトからの値をフォーマットするには、次のようにします。

var query = qs.stringify({
    where: JSON.stringify({
        playerName: 'John'
    })
});
于 2013-01-20T04:15:43.640 に答える