残念ながら、鍵の秘密を保持するために、バックエンドで要求をプロキシする必要があります。 (私はあなたが最初にAPIキーを使う必要はないので、https://api.github.com/users/rsp?callback=fooのような認証されていないリクエストでは利用できないユーザーデータが必要だと仮定しています。ただ私の推測)。
あなたのできることは、次のようなものです:あなたのバックエンドでは、情報を得るためにフロントエンドに新しいルートを追加することができます。
var app = require('express')();
app.get('/github-user/:user', function (req, res) {
getUser(req.params.user, function (err, data) {
if (err) res.json({error: "Some error"});
else res.json(data);
});
});
function getUser(user, callback) {
// a stub function that should do something more
if (!user) callback("Error");
else callback(null, {user:user, name:"The user "+user});
}
app.listen(3000, function() {
console.log('Listening on port 3000');
});
この例では、ユーザーを取得することができます:など、あなたのクライアントに返す前に
例を応答を、任意の秘密APIキーを使用するかではない要求を検証し、プロセス - それはあなたが必要とするものは何でも行うことができます情報:
機能getUser
は、GIへの実際の要求を行う必要がありますあなたがそれを本当にあなたのフロントエンドであるかどうかを変更することができます。 "Referer"ヘッダーや他のものを尋ねて、入力などを検証してください。
ここで公開情報が必要な場合は、jQueryを使用した例のような公開JSON-P APIを使用することができます物事をシンプルに:
var user = prompt("User name:");
var req = $.getJSON('https://api.github.com/users/'+user);
req.then(function (data) {
console.log(data);
});
はあなたの応答のためのDEMO
出典
2016-06-11 10:03:53
rsp
感謝を参照してください - 私はちょうどので、おそらく、私はすべての後にAPIキーを必要としない、私の名前でリポジトリに引っ張っています!私は、その鍵が、より多くの要求をすることができるということを意味していたという気がしていなかった。しかし、私はおそらく間違っています。いずれにしても私は本当にあなたの例を感謝します! – gwpmad
@ gwpmad認証されたリクエストでさらに多くのリクエストを行うことができます。その場合、バックエンドでリクエストをプロキシしてキーを隠す必要があります。 – rsp
ああ、ありがとうございます。これは行く方法のように見えます。ノード – gwpmad