狠狠撸

狠狠撸Share a Scribd company logo
NODEJS API SERVER
IMPLEMENT
NODEJS API SERVER IMPLEMENT
一.目標
?多專案共同開發,可共用API
?簡化api route設計
?以設定檔替代程式修改
?相容不同db type連線
?token 安全管理
NODEJS API SERVER IMPLEMENT
二.應用技術
?nodejs
?express
?socket.io
?Json Web Token
NODEJS API SERVER IMPLEMENT
三.提供功能
?Config Everything
?Simple Route
?Http ,Https ,Socket ,WebSocket Support
?i18n multi language support
?Template render
?log2db
NODEJS API SERVER IMPLEMENT
四.需求與解法
?硬體效能利用
Cluster做ChildProcess 管理
?自動建立與關閉連線
透過MiddleWare Module 做before after處理
讓每個request 自動取得與關閉connection
?連線管理
使用connction pool 做連線管理
NODEJS API SERVER IMPLEMENT
四.需求與解法
?token驗證
使用json web token驗證api存取權限
可指定要驗證api的路徑規則
可指定使用不同jwt 驗證
?多db type支援
可同時連線不同type db
透過設定即可切換
目前支援mssql,mysql,mongodb等db連線
NODEJS API SERVER IMPLEMENT
四.需求與解法
?多語系支援
i18n多語系支援
?提供Config設定
透過設定檔,設定需求功能
除了寫route規則外
不需要修改核心程式
所有的設定都透過設定檔案完成
NODEJS API SERVER IMPLEMENT
四.需求與解法
?提供debug功能
透過改寫req.json,可以更乾淨的輸出debug資訊
?簡化api route實作
盡量保持使用 express route書寫原則
NODEJS API SERVER IMPLEMENT
五.實作要點
?架構
以目錄為單位管理route檔案
利用namespace機制避免uri衝突
?攔截進入route的前 驗證token
依照json web token規範實作token
並可保留資料在token內做selfissue
NODEJS API SERVER IMPLEMENT
五.實作要點
?攔截進入route的前後 管理連線
進入route前依照query的資料建立連線
放在req.connection傳給route
離開route時 透過req.connection取得該連線 與關閉
?route類別設計
利用class繼承 簡化應用端程式開發
之後要增加功能與修改 只需修改上層class
方便維護
NODEJS API SERVER IMPLEMENT
五.實作要點
?api route所需要的資源 全部由框架傳遞到route class內
在route class內即可取得開發所需要的資源
ex:this.app即可參考到express
ex:req.connection 取得db連線
?改寫既有的method
將複雜的流程封裝在parent class內
減少應用端程式錯誤
ex: 在route內改寫了get ,post ,put ,delete
原: this.app.get(“/“+this.ns+”/hello”,function(){}
後: this.get(“hello”,function(){})
NODEJS API SERVER IMPLEMENT
五.實作要點
?統一處理debug輸出
避免在route內寫判斷式決定是否輸出debug資訊
改寫 route class 改寫 res.json()
原 res.json(data)
改 this.son(res,data,debuginfo)
route class會依照debug設定
自動判定是否輸出debug資訊
Ad

Recommended

AKS 與開發人員體驗 (Kubernetes 大講堂)
AKS 與開發人員體驗 (Kubernetes 大講堂)
Will Huang
?
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
實現 Angular, Docker 與 Kubernetes 持續部署 (NG+2020)
Will Huang
?
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
全新 Windows Server 2019 容器技術 及邁向與 Kubernetes 整合之路 (Windows Server 高峰會)
Will Huang
?
Windows Container 101: dotNET, Container, Kubernetes
Windows Container 101: dotNET, Container, Kubernetes
Will Huang
?
ASP.NET Core 6.0 全新功能探索
ASP.NET Core 6.0 全新功能探索
Will Huang
?
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
使用 TypeScript 駕馭 Web 世界的脫韁野馬:以 Angular 2 開發框架為例
Will Huang
?
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Windows 與 Azure 的容器旅程 @ Ignite Mini 2016
Jeff Chu
?
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
使用 C#/Razor 開發互動式 WebAssembly 網站 (Modern Web 2018)
Will Huang
?
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
?
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
Will Huang
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Will Huang
?
前端惭痴痴惭框架安全
前端惭痴痴惭框架安全
Borg Han
?
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
Jeff Chu
?
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
?
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Simon Su
?
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
?
React.js what do you really mean?
React.js what do you really mean?
昱安 周
?
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
前端框架发展
前端框架发展
Chi-wen Sun
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
?
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
Yan Wang
?
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
?
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
?
宅學習 Firebase
宅學習 Firebase
Wei chung chai
?
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
Duran Hsieh
?
前端各阶段工作
前端各阶段工作
Chi-wen Sun
?
Modern web develop
Modern web develop
Chi-wen Sun
?

More Related Content

What's hot (20)

Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
?
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
Will Huang
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Will Huang
?
前端惭痴痴惭框架安全
前端惭痴痴惭框架安全
Borg Han
?
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
Jeff Chu
?
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
?
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Simon Su
?
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
?
React.js what do you really mean?
React.js what do you really mean?
昱安 周
?
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
前端框架发展
前端框架发展
Chi-wen Sun
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
?
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
Yan Wang
?
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
?
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
?
宅學習 Firebase
宅學習 Firebase
Wei chung chai
?
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
Duran Hsieh
?
Micro-frontends with Angular 10 (Modern Web 2020)
Micro-frontends with Angular 10 (Modern Web 2020)
Will Huang
?
快快樂樂學 Angular 2 開發框架
快快樂樂學 Angular 2 開發框架
Will Huang
?
twMVC#36讓 Exceptionless 存管你的 Log
twMVC#36讓 Exceptionless 存管你的 Log
twMVC
?
Angular 4 新手入門攻略完全制霸
Angular 4 新手入門攻略完全制霸
Will Huang
?
前端惭痴痴惭框架安全
前端惭痴痴惭框架安全
Borg Han
?
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
ASP.NET 開發人員不可不知的 IIS (IIS for ASP.NET Developers)
Jeff Chu
?
SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang
?
Node.js從無到有 基本課程
Node.js從無到有 基本課程
Simon Su
?
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
?
React.js what do you really mean?
React.js what do you really mean?
昱安 周
?
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
?
twMVC#36.NetCore 3快速看一波
twMVC#36.NetCore 3快速看一波
twMVC
?
前端框架发展
前端框架发展
Chi-wen Sun
?
利用Signalr打造即時通訊@Tech day geek
利用Signalr打造即時通訊@Tech day geek
Johnson Gau
?
Node.js中间件 connect模块深入浅出
Node.js中间件 connect模块深入浅出
Eric Xiao
?
Frontend Devops at Cloudinsight
Frontend Devops at Cloudinsight
Yan Wang
?
RxJS 6 新手入門
RxJS 6 新手入門
Will Huang
?
Angular 开发技巧 (2018 ngChina 开发者大会)
Angular 开发技巧 (2018 ngChina 开发者大会)
Will Huang
?
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
[Study4TW Visual Studio Everywhere] asp.net core 實務開發經驗分享
Duran Hsieh
?

Viewers also liked (9)

前端各阶段工作
前端各阶段工作
Chi-wen Sun
?
Modern web develop
Modern web develop
Chi-wen Sun
?
API
API
guest7e8175a
?
Contacto server API in PHP
Contacto server API in PHP
Hem Shrestha
?
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Jeff Haynie
?
CodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server API
Sergey Belov
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
前端框架搁别诲耻虫实作
前端框架搁别诲耻虫实作
Chi-wen Sun
?
Designing your API Server for mobile apps
Designing your API Server for mobile apps
Mugunth Kumar
?
前端各阶段工作
前端各阶段工作
Chi-wen Sun
?
Contacto server API in PHP
Contacto server API in PHP
Hem Shrestha
?
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Jeff Haynie
?
CodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server API
Sergey Belov
?
狈辞诲别闯厂基础教学&补尘辫;介绍
狈辞诲别闯厂基础教学&补尘辫;介绍
GO LL
?
前端框架搁别诲耻虫实作
前端框架搁别诲耻虫实作
Chi-wen Sun
?
Designing your API Server for mobile apps
Designing your API Server for mobile apps
Mugunth Kumar
?
Ad

Nodejs api server_implement

  • 2. NODEJS API SERVER IMPLEMENT 一.目標 ?多專案共同開發,可共用API ?簡化api route設計 ?以設定檔替代程式修改 ?相容不同db type連線 ?token 安全管理
  • 3. NODEJS API SERVER IMPLEMENT 二.應用技術 ?nodejs ?express ?socket.io ?Json Web Token
  • 4. NODEJS API SERVER IMPLEMENT 三.提供功能 ?Config Everything ?Simple Route ?Http ,Https ,Socket ,WebSocket Support ?i18n multi language support ?Template render ?log2db
  • 5. NODEJS API SERVER IMPLEMENT 四.需求與解法 ?硬體效能利用 Cluster做ChildProcess 管理 ?自動建立與關閉連線 透過MiddleWare Module 做before after處理 讓每個request 自動取得與關閉connection ?連線管理 使用connction pool 做連線管理
  • 6. NODEJS API SERVER IMPLEMENT 四.需求與解法 ?token驗證 使用json web token驗證api存取權限 可指定要驗證api的路徑規則 可指定使用不同jwt 驗證 ?多db type支援 可同時連線不同type db 透過設定即可切換 目前支援mssql,mysql,mongodb等db連線
  • 7. NODEJS API SERVER IMPLEMENT 四.需求與解法 ?多語系支援 i18n多語系支援 ?提供Config設定 透過設定檔,設定需求功能 除了寫route規則外 不需要修改核心程式 所有的設定都透過設定檔案完成
  • 8. NODEJS API SERVER IMPLEMENT 四.需求與解法 ?提供debug功能 透過改寫req.json,可以更乾淨的輸出debug資訊 ?簡化api route實作 盡量保持使用 express route書寫原則
  • 9. NODEJS API SERVER IMPLEMENT 五.實作要點 ?架構 以目錄為單位管理route檔案 利用namespace機制避免uri衝突 ?攔截進入route的前 驗證token 依照json web token規範實作token 並可保留資料在token內做selfissue
  • 10. NODEJS API SERVER IMPLEMENT 五.實作要點 ?攔截進入route的前後 管理連線 進入route前依照query的資料建立連線 放在req.connection傳給route 離開route時 透過req.connection取得該連線 與關閉 ?route類別設計 利用class繼承 簡化應用端程式開發 之後要增加功能與修改 只需修改上層class 方便維護
  • 11. NODEJS API SERVER IMPLEMENT 五.實作要點 ?api route所需要的資源 全部由框架傳遞到route class內 在route class內即可取得開發所需要的資源 ex:this.app即可參考到express ex:req.connection 取得db連線 ?改寫既有的method 將複雜的流程封裝在parent class內 減少應用端程式錯誤 ex: 在route內改寫了get ,post ,put ,delete 原: this.app.get(“/“+this.ns+”/hello”,function(){} 後: this.get(“hello”,function(){})
  • 12. NODEJS API SERVER IMPLEMENT 五.實作要點 ?統一處理debug輸出 避免在route內寫判斷式決定是否輸出debug資訊 改寫 route class 改寫 res.json() 原 res.json(data) 改 this.son(res,data,debuginfo) route class會依照debug設定 自動判定是否輸出debug資訊