在前後端分離式開發中,經常遇到需要自己 mock 資料測試介面的情況,下面是一種使用 koa2 快速搭建 mock 服務的實現方式。
首先全域性安裝 koa-generator
npm
install -g koa-generator
在合適位置上初始化目錄結構
koa2 mock-server
生成的目錄結構如下:
執行服務
npm run dev
dev 指令使用nodemon
啟動服務,nodemon
是 node 的自動重啟工具,避免了修改**後需要手動重啟的麻煩。
接下來訪問localhost:3000
就能看到已經啟動好的服務了。
koa-generator
生成的路由中預設提供了index.js
與users.js
兩個路由檔案,分別對應了:
const router =
require
('koa-router')(
)// localhost:3000/
router.
get(
'/',
async
(ctx, next)
=>)}
)// localhost:3000/string
router.
get(
'/string'
,async
(ctx, next)
=>
)// localhost:3000/json
router.
get(
'/json'
,async
(ctx, next)
=>})
module.exports = router
以及
const router =
require
('koa-router')(
)// 該檔案下的路由會以 users 作為字首
router.
prefix
('/users'
)// localhost:3000/users/
router.
get(
'/',
function
(ctx, next)
)// localhost:3000/users/bar
router.
get(
'/bar'
,function
(ctx, next)
)module.exports = router
ctx.body
中則提供了返回的結果
在平時的 mock 中,經常會遇到跨域問題,通過設定access-control-*
可以很好避免跨域問題,這裡以筆者曾經遇到過的情景為例。
// 定義 handler middleware
const handler =
async
(ctx, next)
=>
trycatch(e
)}}然後在處理路由前加上這層handler middleware
就可以了
use(handler)
;// routes
use(index.
routes()
, index.
allowmethods()
);use(users.
routes()
, users.
allowmethods()
);在koa-router
中已經封裝了相應請求,使用方法如下
// users.js
const router =
require
('koa-router');
router.
prefix
('/users');
// get
router.
get(
'/bar'
,function
(ctx, next));
// post
router.
post
('/bar'
,function
(ctx, next));
// put
router.
put(
'/bar'
,function
(ctx, next));
// delete
router.
delete
('/bar'
,function
(ctx, next)
);
使用不同的方式訪問http://localhost:3000/users/bar
就可以得到相應的結果(注:3000 埠是預設啟動的埠,你可以在你的專案/bin/www
下更改port
) 使用koa generator生成koa2專案
1 新建專案目錄,準備在 建立專案和寫 就在 建立即可。2 開啟命令列視窗。安裝koa generator,安裝命令為 npm install g koa generator 全域性安裝 3 使用koa generator生成koa2專案,輸入命令 koa2 koa demo koa demo為 專...
koa2使用ejs模板引擎
在koa中使用ejs並不需要像在node中一樣安裝了還要引用,只需要npm了就行,同時還需要安裝koa views模組。如 const views require koa views 對ejs模板進行配置 方法一 extension ejs 指定我們使用的模板為ejs 通過方法一配置ejs模板的時候...
koa2 使用passport許可權認證
主要技術棧 nuxt.js koa mongodb redis 本地使用者登入,第三方登入都需要許可權認證,許可權認證的思路也極其簡單,不外乎就是登入,登出,路由守護三部分。官網 1 安裝 koa2中使用的是koa passport這個包。本地驗證用的是passport local這個策略 npm ...