본문 바로가기
  • optimuslee

전체 글70

[Nestjs] 4. 프로바이더 3장에서 우리는 컨트롤러에 대해 배웠습니다. 컨트롤러는 요청과 응답을 가공하고 처리하는 역할 맡는다고 배웠습니다. 프로바이더는 어플리케이션이 제공하고자는 기능을 수행하는 역할을 합니다. 프로바이더의 주요 개념은 의존성을 지입할 수 있다는 것입니다. 각각의 개체들이 서로 관계를 만들어 기능을 할 수 있도록 해줍니다. 프로바이더는 @Injectable() 데코레이터로 주석이 달린 클래스입니다. 📢프로바이더는 서비스, 레포지토리, 팩토리, 헬퍼 등 여러가지 형태로 구현이 가능합니다. 위에서 언급했다시피 Nestjs에서 제공하는 프로바이더의 핵심은 의존성을 주입할 수 있다는 점입니다. 이를 위해선 라이브러리를 사용할 수도 있지만 Nestjs에서 기본적으로 제공하기 때문에 손쉽게 사용할 수 있습니다. 💡 의존성 .. 2022. 4. 10.
[Nestjs] 3-4. payload 다뤄보기 post, put, patch는 보통 데이터를 같이 서버로 보냅니다. 이때 서버로 보내는 데이터를 우리는 페이로드라고 합니다. 그리고 이러한 데이터는 body에 들어있으며 Nestjs는 DTO(Data Transfer Object)을 정의하여 쉽게 다룹니다. DTO(Data Transfer Object)란 계층간 데이터 교환을 위해 사용하는 객체(Java Beans)입니다. 데이터가 정해진 주소로 들어오면 createCatDto로 데이터를 받고 그 중에서 name과 email 정보를 추출하여 응답으로 반환합니다. 위의 코드가 제대로 실행되는지 cat 생성 api를 요청하고 데이터가 잘 들어가는지 확인해보도록 하겠습니다. 📤요청 📥응답 이름과 이메일을 작성하여 데이터를 서버로 전송하였습니다. 응답도 우리가.. 2022. 4. 3.
[Nestjs] 3-3. 라우터 파라미터 라우트 파라미터는 사실 앞장에서 우리도 모르는 사이에 사용해본 경험이 있습니다. 주로 특정 데이터 불러오거나 삭제하거나 수정할 때 많이 사용합니다. 예를 들어 http://localhost:3000/cats/123주소로 요청을 보낸다고 가정합시다. 123에 해당하는 부분은 당연히 데이터에 대한 ID입니다. 그렇기에 고정된 값이 아니라 데이터에 따라 유동적으로 할당해주어야 합니다. 즉, 라우팅하는 부분에서 동적인 경로를 구성하는 파라미터가 라우터 파라미터입니다. 라우터 파라미터를 설정하는 방법은 크게 2가지입니다. 첫번째 방법은 params 객체로 한번에 데이터를 받는 방법이고 두번째는 라우팅 파라미터를 따로 따로 구분해서 받는 방법입니다. 정답은 없지만 파라미터를 구분해서 받으면 코드의 가독성이 올라가는.. 2022. 4. 2.
[Nestjs] 3-2. CRUD 시스템 서버를 공부하다보면 CRUD라는 단어를 많이 접하시게 될 것입니다. 저도 처음에는 "이..이건 뭐지"라며 당황했었습니다. 하지만 지금부터 알면 되니까 너무 걱정하지 마세요~! CRUD는 데이터 처리 기능인 Create, Read, Update, Delete를 묶어서 일컫는 말입니다. Create는 생성, Read는 데이터 읽기, Update는 데이터 갱신, Delete는 삭제를 뜻하는 기능입니다. 이름 기능 Create 생성 Read 읽기 Update 갱신 Delete 삭제 실제로 데코레이터를 이용하여 코드를 작성하면 아래와 같이 작성할 수 있습니다. 기존의 코드에서는 @Get() 데코레이터를 통해 브라우저에서 바로 데이터를 읽어올 수 있었지만 이번에는 @Res()를 통해 반환되는 값을 읽어보겠습니다. .. 2022. 4. 2.
[Nestjs] 3-1. 라우팅, 요청, 그리고 응답 우리는 이전 장에서 서버를 구동시키고 어떻게 controller를 생성해서 작동시키는지 알아보았습니다. 오늘은 controller의 기능을 활용하여 요청을 받고 응답을 반환해보는 실습을 진행해보겠습니다. "라우팅"이란 우리가 원하는 데이터를 근원지에서 목적지까지 보내거나 받아오는 것을 일컫는 말입니다. 그렇기에 정확한 주소와 데이터 양식을 알고있어야 원하는 정보를 서버로부터 받아올 수 있을 것입니다. 말로 설명하는 것보다 같이 보는 게 더 이해가 잘 되실 겁니다. 아래의 코드를 살펴봐주세요~! CatsController 클래스 내부에 findAll이라는 메서드를 만들어 주었습니다. 그리고 string 타입으로 "The action return all cats" 이라는 문구를 반환할 수 있도록 만들어주었습.. 2022. 3. 28.
[Nestjs] 3. Controller?? 오늘은 nestjs의 controller에 대해 같이 알아보도록 하겠습니다. controller는 말 그대로 어떤 것을 제어한다는 뜻입니다. 과연 그렇다면 어떤 것을 어떻게 제어하는 것일까요?? nestjs에서 controller는 client로부터 server로 들어온 요청을 처리하고 응답을 반환하는 역할을 합니다. 아마도 이전에 express.js로 작업을 해본 경험이 있는 분들이라면 무슨 말인지 쉽게 이해하실 수 있을 것입니다. (서버와 관련된 공부를 전혀하지 않았더라도 상관없으니까 겁먹지 마세요~!!) 물론 처음에는 이 기능이 굳이 필요한가? 라는 의문이 들기도 합니다. 하지만 서버의 구조가 복잡해지고 커지면 유수/보수 과정에 어마어마한 시간과 노력이 필요하기에 초기에 구조를 정확하게 잡아놓기 위.. 2022. 3. 27.
[백준] 10718. We love kriii 문제 ACM-ICPC 인터넷 예선, Regional, 그리고 World Finals까지 이미 2회씩 진출해버린 kriii는 미련을 버리지 못하고 왠지 모르게 올해에도 파주 World Finals 준비 캠프에 참여했다. 대회를 뜰 줄 모르는 지박령 kriii를 위해서 격려의 문구를 출력해주자. 입력 본 문제는 입력이 없다. 출력 두 줄에 걸쳐 "강한친구 대한육군"을 한 줄에 한 번씩 출력한다. 예제입력1 예제출력1 강한친구 대한육군 강한친구 대한육군 코드예시 print("강한친구 대한육군") print("강한친구 대한육군") 코드설명 print문을 사용하여 같은 문구를 2번 출력하면 됩니다~!! 2022. 3. 26.
[백준] 2557. Hello World 문제 Hello World!를 출력하시오. 입력 없음 출력 Hello World!를 출력하시오. 예제입력1 예제출력1 Hello World! 코드예시 print("Hello World!") 코드설명 print문을 사용하여 "Hello World"를 그대로 출력하면 됩니다~! 2022. 3. 26.
[Nestjs] 2-3. Typescript와 인터페이스 오늘 TypeScript에서 유용하게 사용되는 interface라는 기능에 대해 알아보도록 하겠습니다. 인터페이스는 상호 간에 정의한 약속 혹은 규칙을 말합니다. 우리가 공부하는 nestjs의 Typescript에서의 interface는 객체의 속성, 함수의 매개변수, 클래스 등의 타입을 정의한 규칙이라고 보면 됩니다. 인터페이스를 간단히 예제로 살펴보면 아래와 같습니다. interface myAge{ age: number; } function getAge(obj: myAge){ console.log(obj.age) } let person= {name: "seungwon", age: 26} getAge(person);//인터페이스에 정의된 속성, 타입의 조건만 만족하면 객체의 속성 갯수가 더 많아도 상관.. 2022. 3. 26.