본문 바로가기

외부 활동/JSCODE[NEST]

3주차 API 서버 배포(AWS의 Elastic Beanstalk) + CORS세팅+에러처리

학습 목표

  • 환경 변수 분리
  • CORS 셋팅
  • 예상치 못한 에러에 대한 처리
  • AWS의 Elastic Beanstalk를 활용한 서비스 배포

✅ 요구 사항

  1. 환경 변수를 분리해라.
    • 로컬 환경, 배포 환경 2가지로 환경 변수를 분리해라.
    • Node.js에서는 .env를 활용해라.
    • Spring Boot에서는 application.yml(또는 application.properties)를 활용해라.
  2. CORS를 설정해라.
  3. 예상치 못한 에러에 대해, 상태 코드 500과 에러 메시지로 응답하는 전역 예외 처리 설정을 해줘라.
  4. AWS의 Elastic Beanstalk를 활용해서 서비스를 배포해라.

 

환경 변수를 분리는 이전 시간에 데이터베이스를 연결하고 따로 이미 설정해 주었다.

 

CORS

main.ts에서 cors세팅을 해주었다..

 

 

예상치 못한 에러에 대해, 상태 코드 500과 에러 메시지로 응답하는 전역 예외 처리 설정

 

src에 http-exception.filter.ts파일 생성

 

이후 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

필터에 대한 적용은 두가지가 있다.

1. 각각에 적용

2 전역에 적용

 

 

1. 각각에 적용

@Post()
@UseFilters(HttpExceptionFilter)
async create(@Body() createCatDto: CreateCatDto) {
  throw new ForbiddenException();
}

 

이후 이렇게 UserFilters를 사용해서 해당하는 필터(HttpExceptionFilter)를 인자로 넘겨주고 

create함수 안에서 Exceiptiion이 발생하면  exception에 대한 내용이 필터(HttpExceptionFilter)로 넘어 가서 반환이 된다.

 

 

 

 

이렇게 errorr객체에서 인자로 준로준 메세지도 받아 올 수 있다.

 

 

 

 

 

컨트롤러의  클래스 단이나 함수 단에서 걸어서 사용할 수 있따.

 

 

 

 

 

 

 

 

 

 

2 전역에 적용

main.ts

  app.useGlobalFilters(new HttpExceptionFilter());

 

 

error가 string일 경우 아닐경우 분기 처리를 해준뒤

(string일경우 함수or컨트롤러별로 필터를 씌워 준 인자

아닐경우 전역에서 예상치 못한 에러에 대한 경우)

 

url을 이상하게준 경우 원래 nest에서 자동으로 응답하는 에러 처리가 아닌 내가 커스텀한 에러 응답을 만들었다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'외부 활동 > JSCODE[NEST]' 카테고리의 다른 글

5주차 1:N, N:M 관  (0) 2023.05.25
4주차 회원가입, 로그인 기능 추가  (0) 2023.05.19
2회차 익명 게시판 서비스 개발 시작!  (0) 2023.05.12
1회차 기록 Level 1  (1) 2023.05.11