使用Express設置代理伺服器
問題:
我正在進行一個使用BreweryDB的項目。在嘗試從API加載一些數據時,我遇到一個問題:該API不支援JSONP。當我試圖直接使用Angular獲取數據時,會導致CORS問題:
XMLHttpRequest無法加載[https://api.brewerydb.com/v2/.](https://api.brewerydb.com/v2/)。請求的資源上沒有'Access-Control-Allow-Origin'頭。因此,不允許“http://localhost:3000”的來源訪問。
我的解決方案:
為了避免暴露我的API密鑰,我需要設置一個中間代理。以下是使用Node.js和Express設置代理的步驟說明。
步驟1:安裝Express和Request
npm install express --save
npm install request --save
步驟2:建立一個 server.js
檔案
var express = require('express');
var request = require('request');
var app = express();
步驟3:設定路由(將 API_KEY
換成你實際的API密鑰)
app.get('/api', function(req, res) {
request('https://api.brewerydb.com/v2/?key=' + API_KEY, function (error, response, body) {
if (!error && response.statusCode === 200) {
console.log(body);
res.send(body);
}
});
});
步驟4:設定埠口
app.listen(3000);
console.log('伺服器在埠口%d運行', 3000);
步驟5:啟動伺服器(node server.js
)
開啟你的瀏覽器,導航到 http://localhost:3000/api 。你應該能看到JSON物件並且在你的瀏覽器控制台中將其記錄下來:
"message": "請求成功",
"data": "您已到達BreweryDB.com API。對於訪問,請查看http://www.brewerydb.com/developers",
"status": "成功"
如果您遇到任何問題,請隨時向我發送電子郵件。☺