2016-05-31 8 views
0

NodeJS用にrequestモジュールを使用しています。ExpressJSのリクエストモジュールを使用して、すべての発信HTTPリクエストにヘッダーを追加できますか?

私は疑問に思っていました ドキュメントのように手作業ですべてのリクエストにヘッダーを追加するのではなく、

ex。

var options = { 
    url: myuRL, 
    headers: { 
    'myHeader': 'headerVal' 
    } 
} 

request(options ,callback); 

すべてのリクエストのヘッダーを注入するミドルウェアか何かで、それは可能ですか?

私は、このミドルウェアを作成することで試してみました:

const addHeaders = function (req, res, next) { 
    req.header('myHeader', 'MyVal'); 
    next(); 
}; 
module.exports = addHeaders; 

それは、requestモジュールで作成されたものを除くすべてのHTTP要求に取り組んでいます。

注:私はすべて私のことを意味します発信は着信要求ではありません。 https://www.npmjs.com/package/request#convenience-methodsから

答えて

1

request.defaults(options) このメソッドは、どんなオプションがデフォルトあなたがそれに渡す通常の要求APIのラッパーを返します。 myRequest

//requests using baseRequest() will set the 'x-token' header 
var baseRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}) 

あなたがmyRequest.js

var request = require('request'); 
var myRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}) 
module.exports = exports = myRequest; 

[EDIT]の作業例を作成し、例えば、ヘッダを毎回再定義防ぐために、独自のモジュール内の要求モジュールをラップすることができます。 js

const request = require('request'); 
const myRequest = request.defaults({ 
    headers: {'x-token': 'my-token'} 
}); 
module.exports = exports = myRequest; 

index.js index.jsを実行

const myRequest = require('./myRequest.js'); 
const options = { 
    url: 'https://google.com' 
}; 
myRequest(options, (err, res, body) => { 
    if (err) { 
    console.error(err); 
    } 
    else { 
    console.log(res.req._headers); 
    } 
}); 

$ node ./index.js 
{ 'x-token': 'my-token', 
referer: 'https://google.com/', 
host: 'www.google.com' } 

私はまだそれが動作しませんけれどもhttps://github.com/agoldis/stackoverflow_37549654

+0

のTHX @agoldisに例をプッシュした:/ –

+0

@ VassilisPitsはうまくいきます。編集された答えをチェックしてください:) – agoldis

+0

あなたは、アプリケーションを実行するときにヘッダーを設定しますか? –

関連する問題