0

PHP api とやり取りする node.js 上に構築された Web アプリを開発しようとしています。以下は、PHP API が作成する JSON オブジェクトを要求しようとしています。私がしたいのは、それを GET して、.ejs テンプレートの 1 つで使用することだけです。

これが私のノードコードです。

/*
 * GET home page.
 */

 //var request = require('reqeust');
 var http = require('http');
 var body = "";

exports.index = function(req, res){

    var options = {
        host: 'api.dev.com',
        port: 80,
        path: '/api/v1/posts',
        method: 'GET'
    };

    http.get(options, function(res) {
      console.log("Got response: " + res.statusCode);
      console.log(res);
      res.on("data", function(chunk) {
        console.log("BODY: " + chunk);
      });
    }).on('error', function(e) {
      console.log("Got error: " + e.message);
    });

    res.render('index', { data: body });
};

EJS

<%= data.title %>

ただし、data.title は未定義として返されます。私の JSON オブジェクトは以下のようになり、有効です。

[{"title":"This is the title of post 1","extract":"This is just a proof of concept more than anything at the moment","body":"<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. \n \t\t\t\tCras sed tellus massa, at commodo lectus. Ut metus nulla, sollicitudin id mollis ac, \n \t\t\t\tmalesuada eget libero. Duis sit amet auctor metus. Suspendisse et ornare dolor.\n \t\t\t\tMorbi non sodales sem. Nunc semper hendrerit dignissim. Proin id mollis purus.\n \t\t\t\tProin leo leo, feugiat ac sodales in, laoreet quis nisl. Etiam sed enim in libero\n \t\t\t\tpellentesque porttitor id eget diam.<\/p>","date_created":"01\/01\/2013 13:08:45","author":"Simon"}]
4

2 に答える 2

1

モジュールを使用してみrequestてください。チャンクを処理する必要はありません。

/*
 * GET home page.
 */

 var request = require('reqeust');
 var http = require('http');
 var body = "";

exports.index = function(req, res){

    var options = {
        host: 'api.dev.com',
        port: 80,
        path: '/api/v1/posts',
        method: 'GET'
    };

    request(options, function(err, res, data) { //chunks are already aggregated
      console.log("Got response: " + res.statusCode);
      data = JSON.parse(data); // you need to parse the JSON-string into real object
      console.log(data); // inspect what you got
      res.render('index', { data: data });
    })  
};

確かに必要ですnpm install request、あなたはすでにそれをインストールしましたか?

于 2013-01-16T20:23:51.197 に答える
0

dataオブジェクトを含む配列です。試してください

<%= data[0].title %>
于 2013-01-16T13:31:09.450 に答える