用 Nest.js 開發 API 吧 (九) - 總結


Posted by AlanSyue on 2021-01-24

記得去年參加 CoderBridge 舉辦的開發者寫作松,只零星寫了一些工作開發的東西,鮮少嘗試比較有連貫性的系列文,這次是個蠻新鮮的挑戰及體驗。

這系列的起源主要是去年開始開發資訊種子的新官網,資訊種子的朋友建議可以試試 Nest.js,才開始邊研究邊實作。

起初對 TypeScript 不熟,中間遇到了一些坑,但 Nest.js 的社群資源也還蠻豐富的 (還去官方 Discord 用破英文發問)。後來想說把開發學習及遇到的問題記錄下來,說不定之後負責維護的人也可以從中找到相似問題,甚至是能剛好幫助到學習 Nest.js 的人。

接下來為這個系列做的小總結吧!

Nest.js 優點

  1. 基於 Express,但也可以選用配置 Fastify
  2. 完美支援 TypeScript,強型別以及預先檢查減少開發上的預期外錯誤 (這各有擁護者,但我開發上覺得體驗不錯)
  3. 嚴謹的分層,彈性高、鬆散耦合、高度可測試及維護
  4. 官方文件完善,社群豐富

Nest.js 架構

  1. Controller
    控制器,從 Module 被呼叫,並擁有基本路由設定,主要負責接收 client 端的 requests 以及 response。
  2. Module
    類似於 Angular 的 NgModule,讓我們把類型或功能相似的程式封裝成一個一個不同的模組。
  3. Service
    service 主要處理商業邏輯的操作,透過注入依賴的方式讓 Controller 和其他 Service 可以使用。

Postgresql && TypeORM

主要分享:

  1. 如何用 Docker 建立 Postgresql 及 pgAdmin
  2. TypeORM 連線以及建立 Entity

CRUD

透過 Nest.js 啟動 Web service,並能呼叫 API 實作資料庫 CRUD,流程如下:

  1. 先在 Module 註冊會使用到的 ControllerServiceTypeORM
  2. Service 引入 Repository,並寫好 CRUD method。
  3. Controller 設定好 route,並呼叫 Service 的 method。

謝謝有看這個系列的讀者,之後如果研究 Nest.js 有新的心得,再來寫成文章分享!


#nestjs #API #nodejs







Related Posts

Day 152

Day 152

如何使用 Google Cartographer SLAM 演算法來建地圖

如何使用 Google Cartographer SLAM 演算法來建地圖

MTR04_0807

MTR04_0807


Comments