일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- aws
- JavaScript
- mongoDB
- 파이썬프로그래밍기초
- TiL
- 오픈소스기반데이터분석
- Cookie
- HTML
- Git
- 유노코딩
- Python
- 꿀단집
- redis
- 코드잇
- node.js
- 중간이들
- 데이터베이스시스템
- 파이썬
- nestjs
- 클라우드컴퓨팅
- CSS
- 프로그래머스
- 항해99
- 방송대컴퓨터과학과
- 99클럽
- 개발자취업
- 코딩테스트
- 방송대
- 코딩테스트준비
- 엘리스sw트랙
- Today
- Total
목록BackEnd/Express / NestJS (10)
배꼽파지 않도록 잘 개발해요
NestJS로 API를 개발하다보면 흔히 이런 상황을 마주하게 된다.@Get('our-trip')async getTrips( @Query('pageNumber', ParseIntPipe) pageNumber: number,) { return this.tripService.findAll(pageNumber);} 여기서 /out-trip 경로로 쿼리 파라미터 없이 요청을 보내면 어떤 일이 생길까? 바로 ParseIntPipe(undefined)가 실행되면서 에러가 난다. 왜 기본값(= 1)을 줘도 안 될까? 보통 TypeScript에서는 기본값을 이런식으로 지정한다.@Query('pageNumber', ParseIntPipe) pageNumber: number = 1;"쿼리가 없으면 그냥 1이 들어가겠지..

NestJS를 사용하다보면 express에서 Request와 Response 객체를 직접 import 해야할 일이 있다. 예를 들면 Response 객체를 사용하여 클라이언트에 쿠키를 설정하거나 전송해야하는 일, 미들웨어 작성, 거의 없지만 파일 전송 등의 경우가 있다. 컨트롤러에서 만든 API를 Thunder Client로 테스트하던 도중 응답이 pending 상태가 되는 일이 발생하였다. 이럴 경우 무조건 내가 코드를 잘못 쓴 것이기 때문에 컨트롤러부터 살펴봐야한다.auth.controller.ts 파일을 살펴보니 해당 API에서 @Res() 데코레이터를 주입하여 사용하고 있었다. 코드를 아래처럼 수정하면 잘 작동한다. @Res 데코레이터를 삭제하거나, 아니면 @Res 데코레이터를 사용하면서 resp..

NestJS에서 SSR을 해야할 일이 생겼다. pug와 ejs를 써봤는데 ejs 문법이 편해서 ejs를 사용하기로 했다.작성한 ejs 파일은 다음과 같다. 안에 서버에서 지정한 변수의 값이 들어간다.예를 들어 nickname이 고길동이면 "안녕하세요. 고길동님!" 이런식으로 렌더링이된다. 작성한 코드는 다음과 같다.ejs 템플릿 엔진 안에 이메일 인증이 필요합니다. 안녕하세요. 님! 회원가입 완료를 위한 이메일 인증이 필요합니다. 아래의 버튼을 클릭하여, 이메일을 인증해주세요. 버튼을 클릭하시면, 중간이들 사이트의 메인..

NestJS는 모듈 기반 아키텍처를 사용하는 프레임워크이다. import와 export만 제대로 해주면 되는 express와는 다르다.이로 인해 의존성 주입(Dependency Injection)과 모듈 간의 관계 설정이 정말 중요하다. 그래서 아래와 같은 깜찍발랄한 오류들을 자주 만날 수 있다.[Nest] 7816 - 2024. 08. 26. 오후 4:47:41 ERROR [ExceptionHandler] Nest can't resolve dependencies of the AuthSessionService (?). Please make sure that the argument Redis at index [0] is available in the AuthModule context.Potential..

현재 진행하고 있는 프로젝트의 로그인 단계는 대략 7단계를 거친다.코드 개발 중이라서 이보다 많아질 수 있다. 아직 부족하다. auth.service.ts 클래스 안에 특정 함수를 정의하고, 이 함수를 다른 함수가 재사용하는 형태가 되었다. 쉽게 말해 클래스 안에서 한 함수를 다른 함수가 끌어다 쓰고 있는 상황이다.지금 로그인 로직만해도 7단계를 거치고 있는데, 이러다보면 AuthService에는 메서드들이 넘쳐나서 개발할 때 필요한 메서드를 쉽게 찾을 수 없다. 클라이언트에서 리퀘스트가 온다고 하면AuthController의 로그인 API→ AuthService의 로그인 메서드이런식으로 깔끔하게 거쳐가게 하도록 하고 싶다.로그인 메서드에 필요한 나머지 메서드들은 AuthService에서 재사용하는 것이..

https://programming-bellybutton.tistory.com/200 [NestJS] res.cookie를 사용하기 위해 Express의 Response를 import 해야함프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestprogramming-bellybutton.tistory.com지난번에 이런 글을 쓴 적이 있다.글의 요지는 NestJS에서 특정 속성(예: cookie)을 사용하기 위해 express의 객체를 불러와야 한다는 것이었다. 이번 프로젝트에서도 express의 Request 객체를 불러..

프로젝트 리팩토링을 하고 있는데, Access token은 리스폰스의 리턴값으로 보내주고, Refresh token은 쿠키에 담아서 전송하기로 하였다. res.cookie를 사용하기 위해 Express의 Response를 importNestJS에서 Request와 Response 객체를 사용하는 방법은 두 가지가 있다. Express로부터 직접 가져온다 NestJS의 @nestjs/common에서 가져온다 VSCode에서 자동 import를 설정해 놓으면 NestJS의 @nestjs/common에서 가져오게 된다. 그런데 쿠키 전송을 위해 res.cookie를 사용하려면 Express의 Response 객체를 사용해야 한다. res를 import하고 res.cookie를 입력했는데 이렇게 인식하지 못하는..

redisClient에 세션 ID를 넣어주는 코드를 작성하던 중 오류가 발생하였다.NestJS는 기본적으로 TypeScript로 만들어졌기 때문에 타입스크립트를 사용한다. 타입스크립트는 런타임이 아닌 컴파일 중 타입 오류를 발생시킨다. 그래서 코드 작성할 때 시간이 꽤 걸리지만 서버 실행 중 오류가 발생하는 것보다는 백배 낫다.Object literal may only specify known properties, and 'sessionId' does not exist in type 'Buffer'.ts(2353)(property) sessionId: Promise 현상객체를 set 메소드에 직접 전달할 때 타입 에러가 발생하고 있다.문제Object literal이 특정 타입에 맞춰서 작성되어야 하는데..

데이터베이스와의 연결 여부를 알 수 있는 healthcheck API를 만들다가 다음과 같은 오류가 발생하였다. Error: Nest can't resolve dependencies of the HealthCheckService (REDIS_CLIENT, ?). Please make sure that the argument default at index [1] is available in the HealthCheckModule context.Potential solutions:- Is HealthCheckModule a valid NestJS module?- If default is a provider, is it part of the current HealthCheckModule? - If ..

프로젝트 생성 후 엔드포인트가 'sign-in'인 회원가입 API를 만들어보자. NestJS 프로젝트 생성 명령어npm install -g @nestjs/clinest new project-name 현재 우리 서비스에는 회원가입과 관련된 모듈은 auth 모듈과 users 모듈로, 2개가 있다.auth 모듈은 인증 및 인가와 관련된 기능을 담당하고, users 모듈은 회원 관리와 관련된 기능을 담당한다.먼저 회원 정보를 저장할 Users 엔티티를 생성한다. API 개발은 다음과 같은 순서로 진행될 것이다. 1. Entity 정의2. 의존성 주입 (DI, Dependency Injection)3. DTO 설계4. Service 구현 5. Controller 구현1. Entity 정의우선 'users' 모..