簡體   English   中英

Node Express獲取傳遞自定義標頭的請求

[英]Node Express Get request passing a custom header

我正在嘗試使獲取請求等效於此jQuery:

  $.ajax({
    headers: { 'X-Auth-Token': 'YOUR_API_KEY' },
    url: 'http://api.football-data.org/v2/competitions/BL1/standings',
    dataType: 'json',
    type: 'GET',
  }).done(function(response) {       
    console.log(response);
  });

但是,我還沒有弄清楚如何使用nodejs-express。 此代碼來自附加到主應用程序的api路由模塊。 該請求似乎有效,正在收集數據,但沒有結束。 另外,從瀏覽器進行檢查時,無法在請求中看到自定義標頭。

   app.get('/api/:league', function(req, res, next) {

      var apiKey = process.env.API_KEY;    
      let url = 'api.football-data.org';

      var options = {
        host: url,
        method: 'GET',
        path: 'v2/competitions/BL1/standings',
        headers: {
          'X-Auth-Token': apiKey
        }
      };

      let data = "";
      var getReq = http.request(options,function(resp){

         console.log("Connected");        
         resp.on("data", chunk => {
          data += chunk;
         });

         resp.on("end", () => {
           console.log("data collected");
         });
      });

      getReq.on("error", (err) => console.log("OOPS!", err));

      getReq.end(JSON.stringify(data));

  })    

鏈接到項目

嘗試使用request-promise npm軟件包。 https://www.npmjs.com/package/request-promise

var rp = require(request-promise);

const baseUrl = 'api.football-data.org/v2/competitions/BL1/standings';
const apiKey = process.env.API_KEY;

var options = {
  method: 'GET',
  uri: baseUrl,
  headers: {
      'X-Auth-Token': apiKey
  },
  json: true
};

rp(options)
.then(function (response) {
  console.log(response)
  }
);

jQuery ajax函數沒有headers選項。 您可以在官方文檔http://api.jquery.com/jquery.ajax/上閱讀有關此功能的信息。 他們通過beforeSend函數方式自定義請求標頭:

$.ajax({
    beforeSend: function (request) {
        request.setRequestHeader("X-Auth-Token", 'YOUR_API_KEY');
    },
    url: 'http://api.football-data.org/v2/competitions/BL1/standings',
    dataType: 'json',
    type: 'GET',
}).done(function (response) {
    console.log(response);
});

使用http node lib ,可以http node lib此示例

var req = http.request(options, function (res) {
  var chunks = [];

  res.on("data", function (chunk) {
    chunks.push(chunk);
  });

  res.on("end", function () {
    var body = Buffer.concat(chunks);
    // TODO: send data to client
    // res.status(200).json(JSON.stringify(body.toString()))
    console.log(body.toString());
  });
});

req.end();

暫無
暫無

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

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