티스토리 뷰

nest를 이용해 만들 API 서버를 정의해보자.

내가 만들 서버는 자동차회사의 API라고 생각해보겠다.

먼저는 유저에 대한 정보가 있고, 각각의 유저는 자동차를 최대 1대 가질 수 있다고 생각한다.

즉, User 테이블과 Car 테이블을 만들어 이 정보들에 대한 API를 제공 할 것이다.

User 모듈 만들기

그럼 먼저 User에 대한 모듈을 만들자.

Nest에는 Nest CLI라는 매우 편리한 기능이 있다.

컨트롤러를 만들고, 서비스를 만들고, 모듈을 만드는 등의 반복적인 일들을 보다 쉽고 편하게 만들 수 있게도와준다.

NEST CLI의 명령을 확인하고 싶으면 커맨드 라인에 nest 를 입력하면 된다.

이런 결과를 볼 수 있다.

먼저는 컨트롤러를 만들어 보겠다. nest generate controller 를 입력해보자.

그럼 컨트롤러의 이름을 입력하라는 창이 나오게 된다. user 를 입력하자.

이렇게 nest cli에서 자동으로 파일을 만들고, 업데이트 한것을 확인할 수 있다.

user.controller.ts 파일에 들어가면

import { Controller } from '@nestjs/common';

@Controller('user')
export class UserController {}

이런 코드가 자동적으로 입력되어 있다.

@Controller('user') 이 코드가 의미하는 것은 /user 이후에 들어오는 요청을 이 컨틀롤러에서 처리하겠다는 의미이다.

Get 요청

먼저 Get요청을 처리해보자. @nestjs/common 로 부터 Get 을 import 하자.

import { Controller, Get } from '@nestjs/common';

@Controller('user')
export class UserController {
  @Get()
  getAllUser() {
    return 'get All User';
  }
}

이렇게 코드를 작성했다.

간단하게 설명하자면 /user 로 들어오는 요청에 대해 getAllUser함수를 호출하고 이는 get All User 라는 스트링을 리턴할 것이다.

제대로 리턴이 돌아오는지 httpie를 통해 확인해보았다.

HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 12
Content-Type: text/html; charset=utf-8
Date: Thu, 29 Jul 2021 11:23:03 GMT
ETag: W/"c-m1vgOrhWhiBRNsGVJZjsbj0PzJE"
Keep-Alive: timeout=5
X-Powered-By: Express

get All User

정상적으로 응답이 돌아온 것을 확인할 수 있다.

이런식으로 라우팅을 수행하면 된다.

이번에는 특정한 id를 가진 유저에 대한 get요청을 처리해보자.

@Get(':id')
  getUserById(@Param('id') id: string) {
    return `get User with the id ${id}`;
  }

이렇게 작성하면 된다.

이것이 의미하는 바는 /user/:id 로 들어오는 요청에 대하여 해당 함수를 실행한다.

그리고 파라미터는 @Param() 이라는 데코레이터를 통해 받을 수 있다.

http localhost:3000/user/2
HTTP/1.1 200 OK
Connection: keep-alive
Content-Length: 22
Content-Type: text/html; charset=utf-8
Date: Thu, 29 Jul 2021 11:24:51 GMT
ETag: W/"16-sdUUPUvol3eeSCkZYS/AzJ0B4+Q"
Keep-Alive: timeout=5
X-Powered-By: Express

get User with the id 2

정상적으로 응답이 돌아오는 것을 볼 수 있다.

참고로 return 값은 나중에 데이터베이스와 연결하여 수정할 것이다.

다음엔 Post요청을 처리하기 위하여 typeORM을 설치하고 entity를 작성 해 보겠다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함