https://docs.nestjs.com/controllers

import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
findAll(): string {
return 'This action returns all cats';
}
}
import { Controller, Get } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get('breed')
findBreed() {
return '고양이 품종 반환';
}
}
const express = require('express');
const app = express();
const router = express.Router();
router.get('/breed', (req, res) => {
res.send('고양이 품종 반환');
});
app.use('/cats', router); // <-- 여기서 /cats prefix
@Get()
findAll(@Req() request: Request): string {
console.log(request.query); // 쿼리파라미터 확인
return 'all cats';
}
하지만 Nest에서는 @Body(), @Query(), @Param() 등 전용 데코레이터를 쓰는 걸 권장합니다.
@Body() <-> req.body
@Query() <-> req.query
@Param() <-> req.params
@Headers() <-> req.headers
import { Controller, Post, HttpCode } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Post()
@HttpCode(204) // 응답 상태코드를 204로 설정
create() {
return 'No Content';
}
}
const express = require('express');
const app = express();
app.post('/cats', (req, res) => {
res.status(204).send('No Content');
});
import { Controller, Get, Redirect } from '@nestjs/common';
@Controller('cats')
export class CatsController {
@Get()
@Redirect('https://nestjs.com', 301) // 301 상태 코드와 URL 설정
redirectToDocs() {
// 아무것도 안 리턴해도 됨 (Redirect 자동 처리)
}
}
@Get()
@Redirect('https://nestjs.com', 301)
redirectToDocs(@Query('version') version: string) {
if (version === '5') {
return { url: 'https://docs.nestjs.com/v5/', statusCode: 302 };
}
}
@Controller({ host: 'admin.example.com' })
@Post()
create(@Res() res: Response) {
res.status(HttpStatus.CREATED).send();
}
@Get()
findAll(@Res({ passthrough: true }) res: Response) {
res.status(HttpStatus.OK);
return [];
}