# Learning NestJS, Part2 ###### tags: `Nestjs` ## Services and Repositories ### comparison | Services | Repositories | | ---------------------------- | ------------------------------ | | It's a class | It's a class | | put any business logic | put storage-reated logic | | use one or more repositories | usually end up being a TypeORM | ![](https://hackmd.io/_uploads/SJJYl8DEn.png =120%x) ![](https://hackmd.io/_uploads/r19TR8P4h.png =40%x) ### DI Container Flow 1. 一開始即register全部的classes在容器中 2. 容器會找出每一個class所有的dependency 3. 向容器要求建立一個class的實例 **<= Controller** 4. 容器尋找並建立controller所需的dependencies實例,並使用實例這些建立Controller 5. 這些已建立dependency實例會在需要的時候給容器重複使用。 **實作DI可加速在測試環境下的速度** --- # 實作APP的思維 ## 流程 1. 建立User Story 2. 依據User Story列出需使用到的API 3. 根據每條API route列出其功能及需帶有的資訊(Body or Query String) 4. 根據設計出的API之間的關聯,依照其目的來設計Controllers、Services和Repositories