2023. 7. 29. 17:16ใStudy_Develop/์ธํ๋ฐ - Slack ํด๋ก ์ฝ๋ฉ(๋ฐฑ์๋)
๋ณดํต express๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด,
// routes/index.js
const express = require('express');
const router = express.Router();
router.get('/in', (req, res) => {
res.send('Hello, World !');
});
module.exports = router;
// routes/user.js
const express = require('express');
const router = express.Router();
router.get('/iam', (req, res) => {
res.send('Hello, User');
});
module.exports = router;
์ด๋ฐ์์ผ๋ก ๋ผ์ฐํฐ๋ฅผ ์ง์ ์ง์ ํด์ค์ผ ์คํ์ด ๋๋ค.
ํ์ง๋ง, nest.js์์๋ ์ด๋ฅผ controller์์ ์คํํ๋ค.
์ฆ, controller์์ url์ ๋งคํํ๊ณ , ๋ฆฌํ์คํธ๋ฅผ ๋ฐ๊ณ , query๋ฅผ ๋๊ธฐ๊ฑฐ๋ body๋ฑ์ ๋๊ธฐ๋ ์ญํ ์ ํ๋ค.
app.controller.ts>
@Controller('abc') //๊ณตํต์ฃผ์
export class AppController {
constructor(private readonly appService: AppService) {}
@Get('hello') //GET /abc/hello
getHello(): string {
return this.appService.getHello();
}
@Post('hi') //POST /abc/hi
postHello(): string {
return this.appService.postHello();
}
}
์ด๋ฐ ๋ฐฉ์์ผ๋ก controller('abc') ์ด๊ณณ์ ๋ค์ด ์๋ abc๋ ๊ณตํต ์ฃผ์์ด๋ฉฐ,
Get('hello') ์ด๊ฒ์ abc/hello์ ์ฃผ์๋ฅผ ๊ฐ๊ฒ ๋๋ค.
๋ค๋ง, module์ ์ง์ ๊ตฌ์ฑ์ ํด์ฃผ์ด์ผ ํ๋ค.
app.module.ts>
@Module({
imports: [],
controllers: [AppController],
providers: [AppService],
})
export class AppModule {}
-> ํ๋์ ๋ชจ๋๋ก ๊ด๋ฆฌ๊ฐ ๋จ.
๊ทธ๋ฆฌ๊ณ , Service
Service๋ํ ์ถ๊ฐํด์ฃผ์ด์ผ ํจ.
@Injectable()
export class AppService {
getHello(): string {
return 'Hello World!';
}
postHello():string{
return 'post succeeded';
}
}
์๋ฐ ์์ผ๋ก ์์ Controller์์ ๋ง๋ ํจ์๋ค์ service์ ์ถ๊ฐํด์ฃผ์ด์ผ ํ๋ค!
service์ ์ญํ ์?
๋น์ฆ๋์ค์ ๋ก์ง์ ๋ถ๋ฆฌํ๋ค.
๋ผ์ฐํฐ๊ฐ ํด์ผํ ๋์์ ์๋น์ค์, ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ์คํํ ๋ค์ ๊ฒฐ๊ณผ๊ฐ๋ง ๋ฐ์ return ํด์ค
express์ nest.js์ ์ฐจ์ด
1. Controller์ Service์ ๋ถ๋ฆฌ
์ Nest.js ์์ ์ปจํธ๋กค๋ฌ์ ์๋น์ค๋ฅผ ๋ถ๋ฆฌํ๋?
- ์๋น์ค๋ ํธ๋์ญ์ ๋จ์๋ก ์ง๋๋ฐ, ์์ฒญ๊ณผ ์๋ต์ ๋ํด์๋ ๋ชจ๋ฅธ๋ค. (req, res)๋ฅผ ์ฐ์ง ์๊ณ , ํด์ผํ๋ ๋์๋ง, return ํด์ผ ํ ๊ฐ๋ง ์ ์ด์ค๋ค.
- controller์์๋ req, res์ ๋ํด ์์์ผ ํ๋ค.
์ฌ๊ธฐ์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์์ res์ ๋๊ธฐ๊ฑฐ๋ ์๋น์ค๋ก ๋๊ธฐ๊ฑฐ๋ ๋ฑ๋ฑ
- espress์์๋ ์ธ๋ฐ ์์ด (req, res, next) ->{ }์ด๋ฐ ๊ฒ๋ค์ ๊ผญ mocking์ ํด์ค์ผ ํ์.
- ํ์ง๋ง, service๋ mocking ํ ํ์ X ์์ด์ ธ ํ ์คํธ๋ ํธ๋ฆฌ, ์ฌ์ฌ์ฉ๋ ํธ๋ฆฌ
2. ๊ตฌ์กฐ์ ๊ฐ์ ์ฑ
function findUser(email){
return User.findOne({ email});
}
async (req, res, next) =>{
const user=await User.findOne({ email: req.body.email);
res.json(user);
}
์ด๋ฐ ์์ผ๋ก express์์๋ ๋ถ๋ฆฌํ๋ฉด ๋๋๊ฑฐ ์๋๊ฐ์?
- express์์๋ ๋ถ๋ฆฌํด๋ ๋๊ณ ์ํด๋ ๋์ง๋ง, nest.js์์๋ ์๋น์ค๊ฐ ๋ถ๋ฆฌ๋์ด ์์ด ์ด๋ฐ ๊ตฌ์กฐ๋ ๊ผญ! ๋ถ๋ฆฌํด์ ์จ์ผํจ.
- ์์ ๊ฐ์ ์ด์ ๋ก, ๊ตฌ์กฐ์ ๋ํ ๊ฐ์ ์ฑ์ด ๋ถ์ฌ๋๋ค! ๊ทธ๋์ ํ์ ๋ฑ์ ์ ์ฉํจ.
'Study_Develop > ์ธํ๋ฐ - Slack ํด๋ก ์ฝ๋ฉ(๋ฐฑ์๋)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฐฐ์ด ๋ง๋ค๊ธฐ 2 - js (everyํจ์, continue) (0) | 2023.08.04 |
---|---|
loggerMiddleware๋ก morgan์ฒ๋ผ ๋ก๊น ํ๊ธฐ (0) | 2023.07.31 |
Nestjs ํ๊ฒฝ๋ณ์ (env) ์ค์ ๋ฐ ์ฌ์ฉ (0) | 2023.07.29 |
Nest JS Hot reload ์ค์ ํ๊ธฐ (0) | 2023.07.28 |