如何使用node.js來快速搭建自己想要的測試數據。模擬接口返回數據。
首先我們需要先搭建好環境:先把node.js下載
Node.js安裝包及源碼下載地址爲:https://nodejs.org/en/download/。大家根據自己的系統選擇下載就行
Node.js下載界面
下載後安裝,安裝過程非常簡單,直接下一步,在第五步時選擇第三個選項即可,
大家也可以按照這個Node.js安裝教程過程來,安裝完成後,我們來到cmd命令行工具中,進入安裝目錄下(直接打開安裝的文件路徑,然後在地址欄輸入cmd就直接進入了當前目錄下)
node安裝目錄
如上兩圖所示:第一個爲node安裝目錄,找到後再上方地址欄中輸入cmd(如第二圖)然後回車,就會進入dos命令窗口,並且在node安裝路徑下。
爲了檢查node是否安裝成功,我們可以再dos中輸入 node -v 查看版本號,如果能成功查看錶明安裝成功。
然後我們全局安裝npm: dos窗口中輸入 npm install -g npm 回車
成功安裝圖
然後在輸入 npm install -g cnpm 回車
成功安裝圖
成功安裝後再安裝 express 應用程序生成器
dos窗口中 輸入npm install -g express-generator 回車
成功安裝後截圖
接下來就是重點了:這一步我們會安裝一個express應用程序,你可以先選好安裝在什麼位置,取什麼名字
比如我這裏安裝在D盤myprogram\nodejs文件夾下的express文件夾中,取名爲lbin。那麼首先我們需要在dos中進入D:\myprogram\nodejs\express目錄
到這個目錄後我們輸入命令:express --view=pug lbin 回車,等待成功後,在dos窗口中會看到如下輸出信息
這時候我們看文件夾,你會看到你選擇的安裝目錄下多了個lbin文件(如下圖)
我們切換到dos窗口,你會看到下方提示我們安裝東西,我們按照提示安裝即可
先在dos窗口中輸入cd lbin回車
然後 輸入 npm install 回車
然後就可以啓動項目了:輸入 npm start 回車
啓動
這個時候你就可以在瀏覽器中輸入localhost/3000,見證神奇的時候到了
看到這個就證明你成功啦!開不開心!哈哈,彆着急,我們還有事情需要做。
打開lbin項目,你看到的目錄如下圖所示:
lbin項目原始目錄
這個時候,瀏覽器打開localhost:3000/users,可以看到頁面顯示respond with a resource
我們好奇找到users文件,在routes目錄下,然後打開,
routes/users.js文件
我們可以在routes/users.js文件中自定自己想要得到的返回數據
修改
var express = require('express');
var router = express.Router();
//新增數據
var data = {
'code':'200',
'message':'數據獲取成功',
'lists':[
{
'name':'lbin',
'age': '23',
'sex':'男'
},{
'name':'lbin8',
'age': '20',
'sex':'女'
}
]
}
/* GET users listing. */
router.get('/', function(req, res, next) {
res.send(data); //修改
});
module.exports = router;
改後之後,因爲有緩存的原因,我們需要重新啓動node(dos進入項目根目錄下,重新運行npm start),然後打開
成功獲取數據
到這裏就算基本完成啦,但是就這樣的話,你會發現每次都要來修改這個文件,修改後都需要重新啓動,非常的不方便。接下來我們就來繼續改進。在項目下新建一個config文件夾並新建一個api.js,配置一下:
api.js內容如下:
var fs = require('fs');
/**
* 檢查請求的路徑是否存在
* @param apiName 請求路徑
* @param method 請求方式
* @param params 請求參數
* @param res 返回請求
*/
function getDataFromPath (apiName,method,params,res){
if(apiName){
fs.access(
// 提取請求路徑中的js文件
apiName.substring(1)+'.js',
// 回調函數,檢查請求的路徑是否有效失敗返回一個錯誤參數
function(err){
if(!err){
// 每次請求都清除模塊緩存重新請求
delete require.cache[require.resolve('..'+apiName)];
try{
addApiResult(res,require('..'+apiName).getData(method,params));
}catch(e){
console.error(e.stack);
res.status(500).send(apiName+' has an error,please check the code.');
}
}else{
addApiResult(res);
}
}
);
}else{
addApiResult(res);
}
};
/**
* 響應頭
* @param res
*/
function addApiHead(res){
res.setHeader('Content-Type', 'application/json;charset=utf-8');
// 跨域
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
// 控制http緩存
res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", 0);
}
/**
* 返回參數,如無返回參數返回404
* @param res
* @param result
*/
function addApiResult(res,result){
if(result){
res.send(result);
}else{
res.status(404).send();
}
}
/*請求方式*/
// get
exports.get = function(req, res){
addApiHead(res);
getDataFromPath(req.path,'GET',req.query,res);
};
// post
exports.post = function(req, res){
addApiHead(res);
getDataFromPath(req.path,'POST',req.body,res);
};
然後打開根目錄下app.js文件,在上面引入剛剛新建的文件api.js
//引入APIvar api =require('./config/api');
並替換配置
/*配置請求*/
app.get('/',function(req, res){
res.send('hello world');});
app.get('/api/*', api.get);
app.post('/api/*', api.post);
下方分別爲修改之前和修改之後的內容
原始app.js文件內容
修改後app.js 文件內容
然後我們在根目錄新建api文件夾,在其中新建test.js;
test.js文件中寫上你想要的數據即可。
exports.getData = function(method,data){
var backData={
"success":'true',
"code":'000',
"message":"",
"data":{
"total":'2',
"users":[
{
'name':'lbin',
'age': '23',
'sex':'男'
},
{
'name':'libin8',
'age': '20',
'sex':'女'
}
]}
}
return JSON.stringify(backData);
}
這裏完成後,你就可以重新運行npm start,如果這個時候能成功運行,在瀏覽器打開http://localhost:3000/api/test,你就會看到返回的json。
成功啓動
我們看到成功啓動了,如果出現了錯誤的話,大家對應解決然後在啓動就好。在瀏覽器打開http://localhost:3000/api/test,會看到成功的出來數據啦!
這個時候,你想添加其他數據,只需要在api目錄下去新建其他.js文件就可以啦!添加後可以直接訪問的哦。
如果你想完全模仿線上的接口,你只需要一層層的建立文件夾就ok啦!假如線上接口是 http://www.lbin.com/api/recognition/face/shopping_guide/task_list,我們在api文件夾按照路徑新建文件夾和文件即可:api-->recognition-->face-->-->shopping_guide-->task_list.js
如果你想用android studio來測試下數據,你只需要把localhost替換成你本機電腦的ip就ok啦,例如:
http://192.168.x.xxx:3000/api/test (把這個ip地址換成你本機的)