簡體   English   中英

使用Node.js訪問Rest API

[英]Access rest api using nodejs

我正在嘗試訪問opencorporates.com並使用其REST API。 我從如何在Node.js中進行遠程REST調用中獲得了此代碼 任何CURL? 但是它沒有獲取任何數據。 我在網址上嘗試了wget,它工作得很好。

app.js

var https = require('http');

var optionsget = {
host : 'opencorporates.com', 

port : 8080,
path : '/v0.2/companies/search?q=barclays+bank&jurisdiction_code=gb', 
method : 'GET' 
};


console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

var reqGET = https.get(optionsget, function(res) {
console.log("statusCode: ", res.statusCode);
console.log("headers: ", res.headers);


res.on('data', function(d) {
    console.info('GET result:\n');
    process.stdout.write(d);
    console.info('\n\nCall completed');
  });

});

reqGet.end();
reqGet.on('error', function(e) {
console.error(e);
});

嘗試使用請求模塊。 https://github.com/mikeal/request這是類固醇的http模塊。

由於Node異步運行,因此返回的數據被分成多個塊。

.on('data')事件返回一部分數據,然后您需要將其縫合/添加回變量。 然后,您可以使用.on('end')捕獲完整的輸出。

有關更多信息,請參見以下示例: node.js為什么將傳入的數據分成多個塊? (@ vossad01的答案)

就是說,@ SilviuBurcea的使用請求的建議是處理http請求的一種簡單得多的方法,因此您不必自己編寫和處理所有這些。

嘗試在本地運行代碼,首先出現大寫錯誤

var reqGET = https.get(optionsget, function(res) {

reqGet.end();

其次,網址不在該地址工作,也不安全

var optionsget = {
host : 'api.opencorporates.com', 
port : 80,
path : '/v0.2/companies/search?q=barclays+bank&jurisdiction_code=gb', 
method : 'GET' 
};

值得注意的是,如果您想實際使用https,則需要更改require行

var https = require('https');

這是功能齊全的版本,供您參考:

var http = require('http');

var optionsget = {
    host : 'api.opencorporates.com',
    port : 80,
    path : '/v0.2/companies/search?q=barclays+bank&jurisdiction_code=gb',
    method : 'GET'
};


console.info('Options prepared:');
console.info(optionsget);
console.info('Do the GET call');

var reqGet = http.get(optionsget, function(res) {
    console.log("statusCode: ", res.statusCode);
    console.log("headers: ", res.headers);

    buffer='';

    res.on('data', function(d) {
        //console.info('GET result:\n');
        //process.stdout.write(d);
        buffer += d.toString();
        //console.info('\n\nCall completed');
    });

    res.on('end', function() {
        console.info('GET result:\n');
        console.log(buffer);
        console.info('\n\nCall completed');
    });

});
reqGet.on('error', function(e) {
    console.error(e);
});

reqGet.end();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM