url 을 가져오고 , function 을 실행하는 파일을 만들것이다.
이러한 파일은 controller
이다
nest js 라는 프레임워크를 사용하고 있기때문에 cli 를 설치했었다.
nest 를 terminal 에 입려하게 되면 ,
우리가 사용할수있는것들이 출력하게되는데 , 이중 generate 를 사용하게 된다. 줄여서 g 라고 입력하게되며 ,
nest g co
nest g s
nest g mo
를 생성 하도록 하자.
app.module.ts 에 movies 컨트롤러를 이미 import 를 해줬고 ,movies 를 위한 컨트롤러 movies.controller.ts
도 생성이 된다. 그리고 movies.controller.spec.ts
도 만들었다.
spce 은 테스트 파일이다. 그래서 일단 지워주도록 한다.
이 상태에서 이제 깔쌈하게 변화는 모습을 보게된다.
import { Controller , Get } from '@nestjs/common';
@Controller('movies')
export class MoviesController {
@Get()
getAll() {
return 'This will retrun all movies'
}
}
코드를 입력하고나서
깔쌈하게 잘 나오죠
만약에 ,
이부분을 작성하지않게된다면 ??
이부분은 우리의 url 의 Entry Point(엔트리 포인트) 를 컨트롤 하게 된다.
그래서 변경후에 다시 새로고침을 하게되면 ,
not found 를 출력하게되고 ,
다시 url 을 수정해서 새로고침을 하게되면 ,
깔쌈하게 잘 나온다.
import { Controller , Get } from '@nestjs/common';
@Controller('movies')
export class MoviesController {
@Get()
getAll() {
return 'This will retrun all movies'![](https://velog.velcdn.com/images%2Fash3767%2Fpost%2F46e5fba2-b623-4a2c-94f0-50b86f02e132%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202021-06-26%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%2010.44.17.png)
}
@Get("/:id")
getOne() {
return 'this will return one movie'
}
}
코드를 이렇게 수정한뒤에
출력하게되면 너무 아름답게 출력이 되고있는데 , 지금은 뒤에 숫자가 1이든 2이든 똑같이 출력하게된다.
우리가 어떠한 요청을 해야한다면 우리가 직접적으로 요청을 작성을 해줘야한다.
@Get("/:id")
getOne(@Param('id') id:string) {
return `this will return one movie with the id : ${id}`
}
이런식으로 작성을 해준다. 뒤에 나와있는 id:string
부분에서 id 는 달라도 상관이 없지만
앞에 나와있는 @Get("/:id")
와 @Param('id')
에 나와있는 id 는 같아야한다.
다시 실행을 해보면 ,
멋지게 출력이된다.
이번엔 좀 더 decorator 에 대해서 알아보도록하자
만약에 request 의 body 부분에서 가져오고 싶다고하면 ,
우리는 body 부분에 json 으로 요청을 할것이다.
이렇게 작성을하고 API 로 전달을 하게 된다.
그러면 우리는 어떻게 받아야할까 ??
바로 이때 @Body
라는것을 사용하게 된다.
보내고 console.log()
를 확인해보면,
잘 찍히게 된다.
이제 console.log() 가 아니라 front 에 response 를 보내게 되면 ,
제대로 작 동작한다.
다른것도 다 똑같다.
@Patch
위처럼 내가 필요한것은 parameter 를 직접 요청을 해야한다.
만약에 이번에 그럼 query string 을 할려면 어떻게 해야할?? 우선적으로
작성을 해준다.
이런식으로 요청을 받고 전달을 해줘야한다.
@Query Argument 를 사용하면 된다.
코드를 이렇게 다시 고치고 , insomia 로 다시 query string 을 작성해보자 .
서비스는 로직을 관리하는 역할을 가지게 된다.
어떠한 한 개의 요소가 한 가지 기능은 꼭 책임지고 있어야한다.
nest
를 입력하게 되면
nest g s
를 통해서 설정이 가능하다.
movies.service.ts 가 생성됨
spce 은 여기서 테스트파일이니깐 나중에 다루기로하자.
movies 폴더 안에 자동적으로 생성이 됬고 ,
app.module.ts 을 보게되면 ,
providers 에 서비스라는것이 생겼다.
여기 강의에선 진짜 데이터를 다루지 않을것이기 때문에 가짜 데이터를 생성해서 할 생각이다.
entities 폴더를 생성하고 거기 안에 movie.entity.ts
라는 파일을 만들어 준다.
그리고 저 파일안에는 ,
작성을 해준다.
이제 다시 movies.service.ts
로 와서 ,
작성을 해준다.
아까 위에서 service 에는 로직을 관리하는 역할을 작성한다고 했는데 이제 여기다가 로직을 작성하도록한다.
이걸 이제 , movies.controller.ts
에 적용을 해야하는데 아직 서비스에 접근할 방법이없다
어떻게 접근을 해야할까 ??
express
였다면 improt
를 사용해서 접근을 했으면 됬지만 NestJS
에서는 권장하는 방법이 아니다.
이런식으로 가져와야한다.
이제 그럼 moviesService 를 멤버변수로 할당을 했으니깐 다른 함수에서도 moviesService
를 얼마든지 가져다가 사용 할 수가 있다.
이제 moviesService
를 사용할 수 있다.
이제 다시 movies.service.ts 로 가서 로직을 작성
말고도 이제 create 도 작성함
자 이제 테스트를 해보면 ,
boom~~ !!