SlideShare uma empresa Scribd logo
1 de 12
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資訊

Mais conteúdo relacionado

Mais procurados

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

Mais procurados (20)

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

Destaque

前端各階段工作
前端各階段工作前端各階段工作
前端各階段工作Chi-wen Sun
 
Modern web develop
Modern web developModern web develop
Modern web developChi-wen Sun
 
Contacto server API in PHP
Contacto server API in PHPContacto server API in PHP
Contacto server API in PHPHem Shrestha
 
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - AppceleratorAjaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - AppceleratorJeff Haynie
 
CodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server APICodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server APISergey Belov
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介GO LL
 
前端框架Redux實作
前端框架Redux實作前端框架Redux實作
前端框架Redux實作Chi-wen Sun
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile appsMugunth Kumar
 

Destaque (9)

前端各階段工作
前端各階段工作前端各階段工作
前端各階段工作
 
Modern web develop
Modern web developModern web develop
Modern web develop
 
API
APIAPI
API
 
Contacto server API in PHP
Contacto server API in PHPContacto server API in PHP
Contacto server API in PHP
 
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - AppceleratorAjaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
Ajaxworld March 2008 - Jeff Haynie Keynote - Appcelerator
 
CodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server APICodeFest 2014 - Pentesting client/server API
CodeFest 2014 - Pentesting client/server API
 
NodeJS基礎教學&簡介
NodeJS基礎教學&簡介NodeJS基礎教學&簡介
NodeJS基礎教學&簡介
 
前端框架Redux實作
前端框架Redux實作前端框架Redux實作
前端框架Redux實作
 
Designing your API Server for mobile apps
Designing your API Server for mobile appsDesigning your API Server for mobile apps
Designing your API Server for mobile apps
 

Semelhante a Nodejs api server_implement

Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發Fred Chien
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17twMVC
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡cachowu
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Gelis Wu
 
使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版pigso
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统Frank Xu
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4Cat Chen
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍Tianwei Liu
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 yangdj
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4yangdj
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 zhen chen
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展江華 奚
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》easychen
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS國昭 張
 

Semelhante a Nodejs api server_implement (20)

Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node js
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
App house
App houseApp house
App house
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
Node.js 進攻桌面開發
Node.js 進攻桌面開發Node.js 進攻桌面開發
Node.js 進攻桌面開發
 
Angular js twmvc#17
Angular js twmvc#17Angular js twmvc#17
Angular js twmvc#17
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
Asp.net 5 新功能與變革
Asp.net 5 新功能與變革Asp.net 5 新功能與變革
Asp.net 5 新功能與變革
 
Node分享 展烨
Node分享 展烨Node分享 展烨
Node分享 展烨
 
使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版使用Nginx轻松实现开源负载均衡——对外版
使用Nginx轻松实现开源负载均衡——对外版
 
使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统使用NodeJS构建静态资源管理系统
使用NodeJS构建静态资源管理系统
 
建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4建站大业,实战ASP.NET 4
建站大业,实战ASP.NET 4
 
DAE 新变化介绍
DAE 新变化介绍DAE 新变化介绍
DAE 新变化介绍
 
【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结 【项目分享】赶集移动Web App开发总结
【项目分享】赶集移动Web App开发总结
 
赶集团购开发总结4
赶集团购开发总结4赶集团购开发总结4
赶集团购开发总结4
 
Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储 Ria的强力后盾:rest+海量存储
Ria的强力后盾:rest+海量存储
 
ASP.NET Core 2.1設計新思維與新發展
ASP.NET  Core 2.1設計新思維與新發展ASP.NET  Core 2.1設計新思維與新發展
ASP.NET Core 2.1設計新思維與新發展
 
IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》IDF2013大会分享——《使用新浪移动云开发全平台应用》
IDF2013大会分享——《使用新浪移动云开发全平台应用》
 
深入淺出Node.JS
深入淺出Node.JS深入淺出Node.JS
深入淺出Node.JS
 

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資訊