【多圖】記錄下使用 koa2 搭建微信中控服務器

這篇文章是接上一篇文章模仿 egg.js 使用 koa2 搭建項目,代碼已上傳至 githubnode

前言

微信公衆號開發的時候,須要先獲取 access token,能夠這個 token 是有次數限制的,同時這個 token 一次只會有一個有效,也就是若是從新請求,那麼上一個獲取到的 token 就會失效。ios

常規狀況下這個不是問題,但是當有多個獨立服務須要用到微信 API ,這個就會是個很是大的問題。git

微信給出的建議就是起一個專門用於刷新和管理 token 的一個服務器,這個就是中控服務器,不過這個若是隻是用於管理微信的 token 就有點大材小用了,能夠考慮將其餘第三方的也接入進來,相似一個微服務的存在,這個服務是不區分環境的,測試,開發,生產均可以使用。github

思路

管理 token 的一個主要問題就是 token 會存儲在那裏,失效時間又由誰去管理。web

目前我接觸到的作法都是將其存儲到 redis 中,使用 redis 來管理 token 的存儲和有效時間,若是 redis 中沒法獲取到 token,就去微信那邊獲取,若是存在直接返回數據。redis

核心代碼npm

代碼自己就一點點,所有加起來不到幾百行(不含第三方包),但是爲了能穩定容許這點代碼,卻須要搭建一個比較完整的項目出來,心累的趕腳😔。json

項目搭建

小公司的 node 項目自己業務代碼(不含第三方)並不大,並不像瀏覽器中運行的代碼那麼龐大,可是搭建項目自己卻須要耗費必定時間,除非大牛出手,否則一步一坑是確定的事情。axios

不過由於 node.js 自己的環境是可控的,因此咱們能夠經過使用新的的 api 來解決一部分問題,通常狀況下 node 項目的代碼並非很推薦使用構建工具來編譯後運行,因此一些特別新的 api 依然不是很推薦在項目中使用。api

項目結構是參考 eggjs 的,主要思路在上一篇已經說明,這裏主要補充的是遠程調式和啓動腳本這些的編寫。

1. 引入核心插件

  • koa web 框架
  • koa-logger 日誌插件,簡潔,其實生產想用另外一款的
  • koa-router 可選插件,懶人必備
  • axios http 請求插件,支持 node + 瀏覽器
  • redis 緩存用,其實有點大材小用了
  • nodemon 開發時監聽文件變化自動重啓應用
  • pm2 生產環境必備的

這裏須要注意下,由於中控服務器自己不對外網公開,同時 cookie 僅在瀏覽器中獲得支持,因此 session 插件並不須要引入,模板引擎和靜態資源也相似,因此核心就這幾個插件就能夠了,若是你是大神,估計只要 koa 和 redis 了 😁。

2. 製做啓動腳本

個人 npm 腳本,裏面主要是定義入口文件,啓動時自動安裝依賴(只安裝生產環境依賴的包),拆分 開發,調試和生產(測試和生產爲同一命令)

定義好後的腳本是這樣執行的

# 本地開發使用
$ npm run dev

# 啓動(本地)調試模式
$ npm run debug

# 啓動生產環境
$ npm run start

# 啓動測試環境 --env 是 pm2 的功能,具體可看官方文檔
$ npm run start -- --env testing
複製代碼

3. 斷點調試

遠程調試和本地調試在 vscode 中的步驟是同樣的,並且大部分遠程調試是發生在測試環境(小公司才這樣?),因此以爲麻煩的也能夠把拍配置寫進去。

由於不少人不是很明白 node 這麼進行調試,這裏介紹下 vscode 的調試步驟。

第一步: 須要在項目中定義一個文件,放在 .vscode/launch.json 文件中,能夠定義多個調試配置,如圖:

第二部: 在啓動命令中添加 --inspect 參數,好比 node 直接啓動 node --inspect app.js 或者使用 nodemon 啓動 nodemon --inspect ./app.js,如圖:

這裏注意下 --inspect 參數不能放在最後面,若是你啓動不成功,那多半就是你把參數放後面了。

第三部: 選中那個殺蟲圖標,選中第一步的配置,點擊綠色的啓動按鈕啓動,這個時候就能夠調試 node 程序了,這裏要注意的是打斷點只能使用編輯的來作,也就是行號邊上,那裏須要斷點就點那裏,在 vscode 中輸入 debugger 是無效的,可是也不會報錯,默認啓動的端口號是 9229,若是改掉,那麼第一步那裏的配置也須要改掉。

最終效果圖

最後

這個項目代碼自己並很少,不過爲了能讓這個項目穩定運行,花了很多的心思,同時由於直接上 koa,因此自己可能也會存在必定的風險。

項目主要做爲一個項目的模板使用,eggjs 雖然很是好用,但是還不到時候,小而巧纔是目前咱們比較須要的。

相關文章
相關標籤/搜索