2016-11-14 108 views
0

構建在http,https之上的Nodejs請求庫。所以我嘗試從請求對象執行nodejs服務器,它說不是請求的一部分。如何執行nodejs請求模塊?

那麼如何在express下執行或調用下面的代碼?

var express = require('express'); 
var app = express(); 
//Load the request module 
var request = require('request'); 

//Lets configure and request 
app.request({ 
    url: 'https://modulus.io/contact/demo', //URL to hit 
    qs: {from: 'blog example', time: +new Date()}, //Query string data 
    method: 'POST', 
    //Lets post the following key/values as form 
    json: { 
     field1: 'data', 
     field2: 'data' 
    } 
}, function(error, response, body){ 
    if(error) { 
     console.log(error); 
    } else { 
     console.log(response.statusCode, body); 
    } 
}); 
app.listen(8080); 
+0

我不明白你在想什麼 – tommybananas

+0

這沒什麼意義。 Express的要點是運行HTTP服務器。儘管可以在運行Express時從節點發出HTTP請求,但通常只能在處理路由的函數中這樣做。即瀏覽器向Express發出請求,然後Express向其他服務器發出請求,從中獲取響應,然後使用該響應中的數據確定如何響應第一個請求。你的代碼試圖在啓動時發送一個請求,而不是在資源中發送一個被命中的路由。你甚至沒有任何路線。 – Quentin

+0

此外,雖然Express有請求對象,但它們會描述傳入的請求。如果你想創建一個傳出請求,你需要「需要」一個合適的模塊。 – Quentin

回答

2

那是因爲你使用app.request,而你應該只使用request,這是指向模塊本身的變量。所以你的代碼應該是:

var express = require('express'); 
var app = express(); 
//Load the request module 
var request = require('request'); 

//Lets configure and request 
request({ 
     url: 'https://modulus.io/contact/demo', //URL to hit 
     qs: {from: 'blog example', time: +new Date()}, //Query string data 
     method: 'POST', 
     //Lets post the following key/values as form 
     json: { 
      field1: 'data', 
      field2: 'data' 
     } 
    }, function(error, response, body){ 
     if(error) { 
      console.log(error); 
     } else { 
      console.log(response.statusCode, body); 
     } 
    }); 
app.listen(8080); 
相關問題