라벨이 curriculum인 게시물 표시

Nest JS Status Code 설정하기

이미지
import { Body , Controller , Get , Param , Post , Query , HttpCode , // 정상응답코드 지정 HttpStatus , // NestJS에서 제공하는 status 선택 } from '@nestjs/common' ; // coffee 컨트롤러 // localhosg:3000/coffee url로 클라이언트에서 서버로 요청을 준다. @ Controller ( 'coffee' ) export class CoffeeController { // body값을 읽기 위하여 Post요청을 만든다. @ Post () // 응답할 코드를 지정 @ HttpCode ( HttpStatus . ACCEPTED ) // ACCEPTED는 202코드 출력 create ( @ Body ( 'name' ) name : string , @ Body ( 'message' ) message : string ) { // create에서 Body를 받을수 있도록 코딩한다. console . log ( "request from client(POST)" ) // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return ( `당신의 이름은 ${ name } 이고 보낸 메세지는 ' ${ message } ' 입니다.` ); } }   위 코드에서 NestJS에서 제공해 주는 '@HttpCode'를 이용하여 정상적인 응답이 을 줄때의 status code를 클라이언트로 출력해 줍니다. 위 코드에서는 202를 출력하도록 설정되어 있습니다. POST요청에 따른 응답이 202로 정상적으로 ...

Nest JS 바디(body)값 읽기

이미지
  // body값을 읽기 위하여 Post요청을 만든다. @ Post () // create에서 Body를 받을수 있도록 코딩한다. create (@ Body () body ) { // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return body ; } 해당 컨트롤러(위 코드는 coffee컨트롤러에 있음)에 위 코드를 작성한다. 위 코드를 입력하고 Insomnia에서 POST요청을 할때 위 사진과 같이 Body로 보낸 요쳥을 서버에서 다시 응답으로 오는것을 알수 있습니다.  // body값을 읽기 위하여 Post요청을 만든다. @ Post () create ( @ Body ( 'name' ) name : string , // body의 name만 따로 name변수에 저장 @ Body ( 'message' ) message : string // body의 message만 따로 message변수에 저장 ) { // create에서 Body를 받을수 있도록 코딩한다. console . log ( "request from client(POST)" ) // 클라이언트에서 받은 body를 확인하기 위해서 // 다시 클라이언트로 응답한다. return ( `당신의 이름은 ${ name } 이고 보낸 메세지는 ' ${ message } ' 입니다.` ); } 만약 해당 body에 무엇이 들어올지 알면 미리 변수로 지정을 할수 있습니다. 여기서는 name, message를 body에서 받아서 변수로 지정을 합니다. 그리고 응답을 보낼때 하나의 문자열로 클라이언트로 보냅니다.

Nest JS URL에 있는 쿼리(Query) 읽기

이미지
 이번에는 url에 있는 쿼리값을 읽도록 하겠습니다.  @ Get () // @Query()는 url에 있는 쿼리값을 갖고옵니다. findAll (@ Query () paginationQuery ){ // 클라이언트에서 항상 받는 값 2개를 변수로 지정 const { color , cost } = paginationQuery ; return ( `Color : ${ color } , Cost : ${ cost } ` ) }  위와같이 쿼리문을 받을 해당 컨트롤러에 작성을 합니다. '@Query()'에서 해당 쿼리문을 받아 'paginationQuery'에 저장을 합니다. 이후 'color' , 'cost'에 클라이언트로 부터 받은 데이터를 집어넣습니다. 그리고 그대로 해당 'color', 'cost'를 클라이언트 쪽으로 response합니다.    그리고 쿼리문에 무엇이 올지 알면 미리 NestJS에서 객체가 아닌 변수로 받을수가 있습니다. @ Get () // @Query()는 url에 있는 쿼리값을 갖고옵니다. findAll ( // 쿼리문에서 color와 cost가 항상 들어오는 것을 약속 @ Query ( 'color' ) color : string , @ Query ( 'cost' ) cost : string ){ // 클라이언트에서 항상 받는 값 2개를 변수로 지정 return ( `Color : ${ color } , Cost : ${ cost } ` ) }

Nest JS URL에 있는 파라메터(Parameter) 읽기

이미지
 이번에는 요청이 들어오는 URL에서 파라메터를 읽어보겠습니다. 위 사진처럼 module폴더안에 coffee 컨트롤러 폴더를 생성합니다. import { Controller , Get , Param } from '@nestjs/common' ; // coffee 컨트롤러 // localhosg:3000/coffee url로 클라이언트에서 서버로 요청을 준다. @ Controller ( 'coffee' ) export class CoffeeController { // Get요청에서 id를 받는다. @ Get ( ':id' ) findOne (@ Param () params ){ // @Param()은 NestJS에서 제공, 파라메터 찾기 return `보내주신 url의 해당 id는 ${ params . id } 입니다.` }      // findOne(@Param('id') id: string){ // 위처럼 수정해서 사용할수 있습니다. // return `보내주신 url의 해당 id는 ${id} 입니다.` // } } 이제 NestJS를 실행하고 GET요청을 하면 파라메터의 id값을 제대로 읽는다는 것을 알수 있습니다.  하지만 들어오는 파라메타 변수를 안다면 미리 지정을 할수도 있습니다. // Get요청에서 id를 받는다. @ Get ( ':id' ) findOne (@ Param ( 'id' ) id : string ){ // @Param()은 NestJS에서 제공, 파라메터 찾기 // 파라메타에 id가 있을것을 알기 때문에 'id'및 id변수 지정 return `보내주신 url의 해당 id는 ${ id } 입니다.` }

NestJS의 CLI(command-line interface)

이미지
 NestJS 프로젝트 생성하기 프로젝트 생성시 이름, package manager(npm or yarn) 결정해야함 또한 NestJS가 글로벌로 설치 되어 있어야 함 $ nest new copy NestJS 프로젝트 실행하기 default 포트는 3000이고 GET요청을 하면(npm) Hello World!가 브라우저에서 출력됨 $ npm run start copy NestJS 프로젝트 실행하기(개발자 모드) 개발자 모드로 npm run을 하게되면 nodemon과 비슷하게 저장 할때마다 서버를 재시작 해준다.(watch mode) $ npm run start:dev copy Nest 버전 확인하기 $ nest --version copy Nest CLI확인하기 $ nest --help copy NestJS CLI에서 Controller 생성하기 - 1 CLI입력시 컨트롤러폴더의 이름을 입력해야함 $ nest generate controller [name] copy NestJS CLI에서 Controller 생성하기 - 2 CLI입력시 컨트롤러폴더의 이름을 입력해야함 $ nest g co [name] copy NestJS CLI에서 Controller 생성하기(테스트 케이스 제외) - 3 CLI입력시 컨트롤러폴더의 이름을 입력해야함, 스펙파일은 제외함 $ nest g co --no-spec [name] copy NestJS CLI에서 Controller 생성하기(특정경로) - 4 CLI입력시 해당 경로 및 폴더이름까지 포함해야함 ex) module/test로 설정 하면 src폴더에서 module폴더를 생성하고 내부에 test폴더를 생성해서 컨트롤러 파일을 생성합니다. $ nest g co [modules/test] copy NestJS CLI에서 가상으로 Controller 생성하기(특정경로) - 4 CLI입력시 해당 경로 및 폴더이름까지 포함해야함, 가상...

Nest JS란? 개념설명

이미지
Nest JS을 말하기 전 Node JS을 먼저 이야기 해야함  Node JS은 사용자가 모든것을 직접 설계하고 코딩하게 되어있습니다. 초기 최소한의 셋팅이 되어있고 개발자가 원하는 셋팅을 자유롭게 할수 있습니다. 이는 routing, API를 부르는법, 셋팅 또는 웹 소켓등입니다. 또한 코드적으로 코드, 파일 구조와 이름까지도 자유롭게 결정할수 있습니다.  이러한 셋팅을 더 간단하게 해주기 위해서 많은 프레임워크들이 나왔습니다. 대표적으로 Express.js입니다. 이러한 자유성은 양날의 검이 될수 있습니다. 향후 팀이 커지게 되면 해당 어플리케이션에 잠재적 문제가 될수 있기 때문입니다.   NestJS는 NodeJS의 자유성으로 인해 발생되는 문제들 보다 실제 어플리케이션에 발생하는 문제에 대해서 더 집중할수 있게 해줍니다. API를 부르는법, 에러 핸들링, 미들웨어 셋업, 타입스크립 셋업 등등의 디테일 등을 크게 신경쓰지 않도록 해줍니다.  SCALABLE : 시스템을 확정 또는 축소할수 있게 해줍니다. LOOSELY-COUPLED : 느슨한 결합으로 하나의 컴포먼트의 변경이 다른 컴포먼트들의 변경요구를 최대한으로 줄여준다.  TESTABLE : 작성한 코드를 테스트 할수 있다. MAINTAINABLE : 유지보수가 가능하다 NestJS는 위 4가지는 중점으로 개발이 되었습니다. 앞으로 코스를 진행하면서 각각 4가지에 대해서 자세하게 배우게 됩니다. 사실 NestJS에 규칙이 있다고 하지만 플러그인으로 Express, Fastify 또는 다른 것을 사용할수 있습니다.