Post

제로초 nest.js 강의 필기

환경변수

await axios.get(‘/비밀키요청’)

context 란

response.on 비동기로 하는거 라우터보다 먼저 한다는 뜻

nest morgan 쓰면 로그 잘 찍어줌

implements 타입스크립트와 모듈의 장점을 그래도! 타입스크립트가 정확히 검사를 해주는 용도로 쓰는겁니다


DI

AppModule 에 모든 모듈을 넣어줘야 연결된다.

constructor 매개변수에 넣어주는 것, new AppService 하는 거 보다 앱 테스트할때 편리편리, 서비스환경/ 테스트 환경에서 매개변수처럼 편안하게 사용가능/ 매개변수를 쓰기 때문에 결합성이 낮아진다는 말이다.

의존성 주입할때

nest 의 경우, 주입가능한 요소가 클래스이면 클래스이름만으로 주입할 수 있게 해주고, class 가 아닌 커스텀한 요소들은 custom key 를 맞춰줘야한다.

@injectable() 붙으면 다 provider 입니다

1
2
3
4
5
6
providers: [
  {
    provide: "CUSTOM_KEY",
    useValue: "CUSTOM_VALUE"
  }
];
1
2
constructor (@Inject( token : "CUSTOM_KEY") private readonly customValue){}

자바스크립트로 코드를 작성하면 메모리에 저장되는 것들

  • 스택 : 원시값, 호출스택(실행컨텍스트)

  • 힙 : 객체 등 전부다 여기 저장됨

로그에 저장 플랫폼

센트리나 데이터독, 클라우드 워치에 저장하면 좋다.


로그에 저장하는 사항들

타입 export 클래스와 인터페이스 차이

클래스로 하면 자바스크립트로 바꿨을 때도 남아있다. 클래스를 사용하면 bodyparser 나 joi, validator 등의 라이브러리로 전처리 가능

관습

설계 처음에 잘못하면 DEPRECATED_ 붙이기도 하지만, 최대한 실수 안하는게 좋다. 오래된 회사의 api 문서 보면 노하우가 녹아있다. cafe24


데코레이터

ctx 는 실행컨텍스트,

테스트 할 때나 나중에 수정해야할때 익스프레스처럼 req,res 로 일일히 다 쓰면 나중에 다 바꿔줘야한다. 데코레이터 쓰면 그런 일이 줄어들고, 코드의 중복도 줄어든다.

ctx.switchToHTTP() ctx.switchToWebSocket()

하나의 함수(데코레이터) 안에서 여러 서버정보를 가져올 수 있다. 예를 들면 웹소켓과 http 서버간 소통을 쉽개 해줄 수 있다.


AOP

aop 관심사를 횡으로 나누는 프로그래밍

A -> B > C -> D A -> C -> D A -> E > F -> D -> G Z -> A -> X -> D

위 네가지의 공통점으로는 A가 먼저 실행되고 마지막쯤엔 D가 실행된다.

미들웨어가 보통 가로로 실행되는데, 세로로 나오는 중복 같은걸 줄일수 있지 않을까?! 해서 나온게 인터셉터


인터셉터

미들웨어는 컨트롤러 실행 전에만 가능 인터셉터는 컨트롤러 실행 전,후 모두 간섭 가능

인터셉터 쓰면 컨트롤러 실행하는데 시간 얼마나 걸렸나 이런 것도 체크 할 수 있다. 제로초님은 보통 컨트롤러 동작 후에 어떤 동작을 하게 만들고 싶을 때 많이 씀. 응답하기 전 마지막으로 데이터를 가공하고 싶을때

  1. 리턴 값을 자동으로 { data :’user’, code: “SUCCESS”} 이런 식으로 주고 싶을때
  2. json 에 undefined 를 주면 에러가 날 수 있기때문에 자동으로 null 로 바꿔서 보내주고 싶을 때

중간에 끼어들고 간섭하는 사람을 인터셉터라고한다.

rx 는 파이프로 비동기 실행하게 해줌 굿. 함수 그때 그때 외우면 좋다. 파이프는 함수들이 들어있으면 거기안에 있는 함수들을 하나하나 적용해줌

This post is licensed under CC BY 4.0 by the author.