從頭建立一套web | api server是什麼
到昨天為止,我們介紹了身為主角的frontendserver和webapp的大致結構,接下來幾天就先改開支線任務,進行APIServer和database的開發。如同先前的預告,本次專案在APIServer會著墨較少,以快速開發完備功能供前端使用為目標,因此開發方式會和FrontendServer較為不同。在這系列文章提到的APIServer是指連接database、提供RESTfulHTTPendpoints的Node.jsserver。由這台Server提供的RESTfulAPI除了會被Frontend的server/client呼叫外,也能讓mobileapps呼叫,因此在架構上APIServer和FrontendServer是獨立運作、佈署的。這樣的職責分割所...
到昨天為止,我們介紹了身為主角的 frontend server 和 web app 的大致結構,接下來幾天就先改開支線任務,進行 API Server 和 database 的開發。如同先前的預告,本次專案在 API Server 會著墨較少,以快速開發完備功能供前端使用為目標,因此開發方式會和 Frontend Server 較為不同。
在這系列文章提到的 API Server 是指連接 database、提供 RESTful HTTP endpoints 的 Node.js server。由這台 Server 提供的 RESTful API 除了會被 Frontend 的 server/client 呼叫外,也能讓 mobile apps 呼叫,因此在架構上 API Server 和 Frontend Server 是獨立運作、佈署的。這樣的職責分割所帶來的 server 結構和以往全部寫成同一台 server 的 Monolithic 結構[1]相比,有著更容易分工開發、易於分別彈性擴展(elastic scaling)等優點,不過也會帶來額外的 communication overhead。
快速打造 API Server綜合以上所述,API Server 的職責主要有:
連接 database 進行操作並管理 schema,包括初始的 table creation 和後續的 schema migration 提供 HTTP API 讓其他人(統稱為 client)可藉由 HTTP 進行資料操作在 Node.js ecosystem 有山積一般的 module 能幫忙達成這些目標,不管是對應 MongoDB 的 ODM (註1)套件 Mongoose[2]、自帶優秀 routing 和 middleware 能力的 Express.js[3] 都是常用的 module。這些 module 適合以 bottom-up 的角度逐步打造出自己需要的 API Server,不過這樣的開發速度還不夠快,我們想要更加偷懶快速的解決方案,能在 schema 宣告完成後直接連接 database 並...