残念ながら、キーの秘密を保持するために、バックエンドでリクエストをプロキシする必要があります。( https://api.github.com/users/rsp?callback=fooのような認証されていないリクエストを介して利用できないユーザーデータが必要であると想定しています。そうしないと、そもそも API キーを使用する必要がないからです。 -しかし、あなたが何をする必要があるかを具体的に言わなかったので、それは私の推測です)。
できることは次のようなものです: バックエンドでは、情報を取得するためだけにフロントエンドに新しいルートを追加できます。秘密の API キーを使用するかどうか、要求を検証する、クライアントに戻る前に応答を処理するなど、必要なことは何でも実行できます。
例:
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');
});
この例では、次の場所でユーザー情報を取得できます。
関数getUser
は GitHub に実際のリクエストを行う必要があり、それを呼び出す前に、それが本当にリクエストを行っているフロントエンドであるかどうかを変更できます。たとえば、「Referer」ヘッダーなどをチェックしたり、入力を検証したりします。
ここで、公開情報のみが必要な場合は、次のような公開 JSON-P API を使用できる場合があります。jQuery を使用して物事を単純にする例:
var user = prompt("User name:");
var req = $.getJSON('https://api.github.com/users/'+user);
req.then(function (data) {
console.log(data);
});
デモを見る