node.js에서의 스프링 비스무리한거..
ORM
,유효성검사
,DB설정
등등.. 기본으로 갖춰준다 IoC
, DI
, AOP
등등 객체지향 개념을 도입해 TypeScript
를 무조건써야함유저서비스를 만든다
컨트롤러는 라우팅(Routing)을 통해 각 컨트롤러가 받는 요청을 분류한다.
소스코드를 직접써도 되지만 CLI를 쓴다면 쉽게 생성할수 있고 추후에 다른요소를 만들더라도 연관관계를 쉽게 설정할수 있다.
nest g controller [NAME]
다른 Nest 약어는
nest -h
로 확인이 가능하다.
만들려고 하는 리소스(앱)에대한 CRUD 템플릿을 한번에 만들수도 있다
nest g resource [NAME]
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService) {}
@Get()
getHello(): string {
return this.appService.getHello();
}
}
@Controller
데코레이터를 선언하는걸로 해당 클래스는 컨트롤러의 역할을 한다
@Get("he*lo")
같은 식으로 와일드카드를 사용 할 수 있다. (단,-
,.
는 문자열취급)
클라이언트에서 보낸 요청을 Nest(Server)에서 다룰수 있는 객체로 변환하는것
@Req()
데코레이터로 사용한다
위에서 만든 CRUD 템플릿은 서버를 실행하게되면 어떤 라우팅을 통해
Response
를 받을 수 있는지 Console로 보여준다
각 CRUD 라우팅
경로 | http Method | Code | Body |
---|---|---|---|
/users | POST | 201 | 새 유저를 만든다 |
/users | GET | 200 | 모든 유저객체를 반환한다 |
/users/1 | GET | 200 | 1번유저 객체를 반환한다 |
/users/1 | PATCH | 200 | 1번유저를 수정한다. |
/users/1 | DELETE | 200 | 1번유저를 삭제한다 |
CLI로 (
nest g resource Users
)로 만든 Update는PATCH
를 사용하고 있다.
wikiDocs에선PUT
(전체교체)를 사용중이나 실제 구현시에는PATCH
를 활용하자
만약 요청을 처리하는중 에러가 발생하거나 예외를 추가해야한다면
throw new [ExceptionName]
으로 추가한다.
Nest는 Response 헤더를 자동 구성해준다.
만약 커스텀 헤더를 추가하고싶다면
@Heders()
데코레이터를 사용하면된다.