私は、Google Cloudの機能を使ってAPI上でランダムなWikipediaページを取得しようとしました。 Wikipedia APIはうまく動作します。あなたは、ブラウザで結果を確認中jsonfmする形式を変更することができますテストのためにクラウド機能からランダムなwikiページを取得
https://de.wikipedia.org/w/api.php?action=query&format=json&generator=random
:これは私の要求です。 Click here。
しかし、リクエストが完全に成功する前でも自分の機能が破壊されているようです。私は(または私はそのデータをログに記録したい場合でも)データを解析したい場合は、私はその(例えば)などの
SyntaxError: Unexpected end of json
ログを見て(いいえ、私は自分でそれをカットしていない)だ:
DATA:UE || "}、" クエリ ":{" ページ ":{" 2855038 ":{" たpageID ":2855038、" NS ":0、" タイトル ":" トーマス・フィッシャー
もちろん、これは有効なjsonではなく、解析できません。これが何であれ私の機能です:
exports.randomWikiPage = function getRandomWikiPage (req, res) {
const httpsOptions = {
host: "de.wikipedia.org",
path: "/w/api.php?action=query&format=json&generator=random"
};
const https = require('https');
https.request(httpsOptions, function(httpsRes) {
console.log('STATUS: ' + httpsRes.statusCode)
console.log('HEADERS: ' + JSON.stringify(httpsRes.headers))
httpsRes.setEncoding('utf8')
httpsRes.on('data', function (data) {
console.log("DATA: " + data)
const wikiResponse = JSON.parse(data);
const title = wikiResponse.query.title
res.status(200).json({"title": title})
});
}).end();
};
私は既にここで何かを返そうとしました。同様にthat videoが説明されています。しかし、ノード文書https.request
を調べると、Promise
は返されません。だから帰りは間違っている。私もon('data', callback)
をそれ自身のfunction
に抽出しようとしましたので、callback
を返すことができます。しかし、私はそれでも成功していません。
どのようにそれは私の期待を返すというのが私の機能を見ている:
{ "タイトル": "ランダムウィキペディアページタイトル"}
?
うわー。それは速かった。ありがとう、それは動作します。 'let wikiResponseData;'を編集して 'let wikiResponseData =" ";'にすることができますか?さもなければ、 'wikiResonseData'は' undefined {THE_JSON_DATA} ' – StefMa
に変更されます。私はストリームで混乱して以来、ごめんなさい –