1

Express と Request (npm を使用してインストール) の組み合わせを使用して、get 要求を送信してサーバーから json を取得しようとしています。しかし、何をしても返される本体は「未定義」です。

これは私の server.js ファイルのコードです。jsonは実際に送信しているものではありません。実際に送信しているものを投稿できないため、これは単なる例です。

import express = require("express");
import bodyParser = require("body-parser");
let app = express();
app.use(bodyParser.json());

app.get('/config', function(req, res){
    res.json('{name: test}');
})

app.listen(3000);

次の両方を試しましたが、どちらも本体が未定義であると言っています。

import request = require("request");

let req = {
    url: `http://localhost:3000/config`,
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
}

request(req, function(error, response, body){
    this.config = JSON.parse(body);
})

request(`/config`, function(err, res, body) {
    this.config = JSON.parse(body);
});

私が間違っていることを誰かが知っていますか?これまでエクスプレスやリクエストを使用したことがないので、ヒントをいただければ幸いです。


アップデート

リクエストコードを次のように変更すると、関数の内部は実行されません。これがなぜなのか誰か知っていますか?

let req = {
    url: `http://localhost:3000/config`,
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
}

request(req, function(error, response, body){
    console.log("response => "+JSON.parse(body));
    return JSON.parse(body);
})
4

2 に答える 2

2

OPはそれを機能させていないので、彼がそこに立ち上げたコードは正しいと思います。彼が始めるのを助けるために、ここに私の実用的なソリューションを投稿することもできます.

うまくいけば、これによりデバッグの時間を節約できます...

クライアント:

"use strict";
let request = require("request");

let req = {
    url: `localhost:4444/config`,
    proxy: 'http://localhost:4444',
    method: 'GET',
    headers: {
        'Content-Type': 'application/json'
    }
};

request(req, function (err, res, body) {
    this.config = JSON.parse(body);
    console.log("response => " + this.config);
});

サーバ:

"use strict";
var express = require("express");
var bodyParser = require("body-parser");
var app = express();
var config = require('config');
app.use(bodyParser.json());

app.get('/config', function(req, res){
    res.json('{name: test}');
});

// Start the server
app.set('port', 4444);

app.listen(app.get('port'), "0.0.0.0", function() {
    console.log('started');
});

出力:

応答 => {名前: テスト}

于 2016-07-21T03:56:55.290 に答える