# 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 |


### 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