1

最初のパラメーターとして必要な属性を持つ URL を使用して送信すると、要求は正常に機能しますが、要求属性を含むオプション オブジェクト パラメーターを使用して送信しようとすると毎回失敗します。

"use strict"
var https = require('https'),
    request = require('request');

var obj = {
    translate: function(textToTranslate) {
        var options = {
            url: "https://translate.yandex.net/api/v1.5/tr.json/translate",
            qs: {
                key: process.env.TRANSLATION_APP_TOKEN,
                lang: "en-ru",
                text: textToTranslate
            }
        }, translationRequest = https.request(options, function(response) {
            response.on('data', function (chunk) {
                console.log(JSON.parse(chunk).text[0]);
            });
        });
        console.log(options);

        translationRequest.on('error', function (response) {
            console.log(response);
        });

        translationRequest.end();
    }
};

obj.translate("hello");

パラメータを渡すためにqsオプションを使用していますが、formDataとbodyを試しましたが、うまくいきません。

助けてくれてありがとう

4

1 に答える 1

1

これは、のrequest代わりに(すでにロードされている)モジュールを使用して、私にとってはうまくいきますhttpsdocsによると、これらのパラメーターを GET リクエストを介してクエリパラメーターとして渡す必要があります (したがって、POST フォームデータは機能しません)。

"use strict"
var https = require('https'),
    request = require('request');

var obj = {
    translate: function(textToTranslate) {
        var options = {
            url: "https://translate.yandex.net/api/v1.5/tr.json/translate",
            qs: {
                key: "<redacted>",
                lang: "en-ru",
                text: textToTranslate
            }
        }
        request.get(options, function(e, r, body) {
            console.log(body);
        });
    }
};

obj.translate("hello");

有効なキーを使用して API に対してテストしたところ、次の応答が得られました。

{"code":200,"lang":"en-ru","text":["привет"]}

options価値があるのは、モジュールで行ったように機能しない理由は、それが not用httpsに設計された構文だからです。が機能するには、そのスキーマに従う必要があります。requesthttpshttps

options = {
    hostname: "translate.yandex.net",
    path: "/api/v1.5/tr.json/translate?key=" + process.env.TRANSLATION_APP_TOKEN + "&lang=en-ru&text=" + textToTranslate
}

(ドキュメント: https://nodejs.org/api/http.html#http_http_request_options_callback )

于 2015-07-21T19:13:08.883 に答える