2017-07-16 165 views
1

對於n00b問題感到抱歉,我一直有點被卡住,所以我希望你們可以把我放在正確的方向。發送來自NodeJS/Express的JSON響應

我正在製作一個應用程序,它是通過NODEJS從REST API檢索數據。 (這是一個成功的作品)。

然後我有一個監聽URL(我自己的API),表示我通過瀏覽器http://localhost/api或使用POSTMAN調用。到目前爲止,我在控制檯(NODE Con​​sole)中看到,當我看到JSON響應時,我的請求得到完美處理,但是,我還想在瀏覽器或POSTMAN中將JSON響應視爲JSON響應,而不僅僅是控制檯我知道我在我的(簡單)代碼中丟失了一些東西,但我剛剛開始......請幫助我在這裏是我的代碼。

var express = require("express"); 
var app = express(); 
const request = require('request'); 

const options = { 
    url: 'https://jsonplaceholder.typicode.com/posts', 
    method: 'GET', 
    headers: { 
     'Accept': 'application/json', 
     'Accept-Charset': 'utf-8', 
    } 
}; 

app.get("/api", function(req, res) { 
    request(options, function(err, res, body) { 
    var json = JSON.parse(body); 
    console.log(json); 
    }); 
    res.send(request.json) 
    }); 

app.listen(3000, function() { 
    console.log("My API is running..."); 
}); 

module.exports = app; 

非常感謝!

+0

request.json應該是什麼? –

+0

沒有特別要求;-)我只是在沒有任何請求參數的情況下點擊/ api url。我想通過res.send(request.json)發送來自我的請求(我使用的API)的響應,但是這並沒有返回我正在嘗試弄清楚如何執行的請求的正文。所以簡而言之。我對JSON API的請求起作用,並且我希望在通過http:// localhost:3000/api - >向其他api調用請求 - > 1)檢索數據時打開我自己的API時輸出該請求,2)控制檯日誌數據但是3)也在瀏覽器中顯示爲JSON。 3似乎沒有工作,1和2工作 – Dreemlife

+0

也許res.json(json)? –

回答

1

很大程度上得益於ProgXx,原來我用同樣的資源和響應名稱。這是最終的代碼。非常感謝ProgXx

var express = require("express"); 
var app = express(); 
const request = require('request'); 

const options = { 
    url: 'https://jsonplaceholder.typicode.com/posts', 
    method: 'GET', 
    headers: { 
     'Accept': 'application/json', 
     'Accept-Charset': 'utf-8', 
     'User-Agent': 'my-reddit-client' 
    } 
}; 

app.get("/api", function(req, res) { 
     request(options, function(err, output, body) { 
     var json = JSON.parse(body); 
     console.log(json); // Logging the output within the request function 
     res.json(json) //then returning the response.. The request.json is empty over here 
}); //closing the request function 

}); 

app.listen(3000, function() { 
    console.log("My API is running..."); 
}); 

module.exports = app; 
2

要從快遞服務器發送到前端的json響應使用res.json(request.json)而不是res.send(request.json)

app.get("/api", function(req, res) { 
    request(options, function(err, res, body) { 
    var json = JSON.parse(body); 
    console.log(json); // Logging the output within the request function 
    }); //closing the request function 
    res.send(request.json) //then returning the response.. The request.json is empty over here 
}); 

嘗試這樣做

app.get("/api", function(req, res) { 
    request(options, function(err, response, body) { 
    var json = JSON.parse(body); 
    console.log(json); // Logging the output within the request function 
    res.json(request.json) //then returning the response.. The request.json is empty over here 
    }); //closing the request function  
}); 
+0

隨着你的代碼它返回0在瀏覽器和郵遞員 - 返回空白,所以我失去了更多的東西我會說:) – Dreemlife

+0

我不認爲你是從正確的位置發送響應。移動res.json()裏面請求功能。正如你在得到迴應之前你要返回的值。查看答案,獲取更新的代碼。 –

+0

好的..你需要在'request'函數中改變參數名稱。兩者都有相同的名稱'水庫' –