일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 인접행렬
- MySQL
- GraphQL
- html
- dfs
- java
- Deep Dive
- 자료구조
- 알고리즘
- puppeteer
- bean
- JWT
- Spring
- node.js
- 탐욕법
- Interceptor
- 인접리스트
- LifeCycle
- css
- OOP
- Linux
- TIL
- nestjs
- 프로그래머스
- javascript
- Kubernetes
- winston
- REST API
- 코딩테스트
- typescript
- Today
- Total
목록전체 글 (241)
처음부터 차근차근
NestJS는 decorator라는 기능으로 구성되어 있습니다. Decorator는 여러 프로그래밍 언어에서는 많이 알려져있지만, Javascript에서는 생소합니다. 이 부분은 Typescript 에서 자세히 다룹니다. Param decorators Nest에서는 Http route handler와 같이 사용할 수 있는 param decorator를 제공합니다. 우리가 만약 Request 객체에서 User를 받아올려고 한다면, @Body() user:userEntity를 사용해야 합니다. @Request(), @Req() req @Response(), @Res() res @Next() next @Session() req.session @Param(param?: string) req.params / re..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/Wj8KN/btsAUJC5ukd/74RxpEgBKMG9jFx5srUd1k/img.png)
Exception filter Nest는 예외 처리를 진행하기 위해 exception layer를 내장하고 있습니다. 이 레이어는 app code에서 처리되지 않은 예외를 catch해서 정제된 응답을 제공합니다. 이러한 기능을 통해 유저 친화적인 응답을 제공하고 Server가 동작하지 않는 문제를 해결합니다. 기본적으로 Nest에 내장된 global exception filter가 HttpException 타입과 그 하위 타입의 예외들을 처리하고, 알 수 없는 예외(ORM Query 혹은 연결 문제 등)는 500 Internal server error를 디폴트로 응답합니다. 기본 exception filter는 statusCode와 message가 존재하는 exception이면 정상적으로 catch하고 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/curSxa/btsATEaUFxq/gE0NIvqJWe7135iKcfaVKK/img.png)
Pipe Pipe는 두 가지 역할을 합니다. transformation: transform input data to the desired form (e.g., from string to integer) validation: evaluate input data and if valid, simply pass it through unchanged; otherwise, throw an exception 파이프는 Route handler가 동작되기 전에 실행되며, route handler의 인자들이 도착하기 전에 작업을 처리합니다. Nest의 Pipe를 통해 인자들의 유효성 검사를 진행하거나, 인수를 변환하는 작업을 진행합니다. 주의할 점은 파이프는 Exception 영역 내부에서 실행됩니다. 만약 유효성 검사를..
[TIL - 23XXXX] 오늘 한 일 NestJS 강의 수강 NestJS 공식 문서 기초 정리 NestJS 강의 수강 Fastcampus 강의를 들으면서 많은 모듈 사용방법을 간단하게 익혔다. 과거 TypeORM migration 방법도 다시한번 정리하였다. 1. interceptor를 통해 Pagenation을 위한 데이터 로직 변경 진행 import { CallHandler, ExecutionContext, Injectable, NestInterceptor } from '@nestjs/common'; import { Request } from 'express'; import { Observable, map } from 'rxjs'; // Pagenation을 위한 Interceptor 구현 진행..
Interceptor란? 의미 : 가로채는 사람, 가로채는 것을 의미합니다. interceptor는 컨트롤러 전, 후에서 다양한 역할을 해줍니다. 공식문서에 나와있는 예시로는 메서드(컨트롤러) 실행 전, 후의 추가적인 로직 수행 함수에서 반환된 결과 및 예외에 대한 변환(ex. Logger) 기본 함수 동작의 확장 특정 조건 하에서 완전한 함수의 재정의(ex. 캐싱 목적) 이렇게 있습니다. Interceptor는 AOP(관점 지향 프로그래밍 기법) 기술에서 영감을 받아 만들어졌습니다. 모든 interceptor에는 intercept() 메서드가 들어가며 두가지 중요한 인자가 들어가있습니다. Interceptor의 인자 1. Execution Context Execution Context(실행컨텍스트)는 ..
Guard란? Guard는 특정 경로로의 요청을 승인하는지에 대한 판단을 내리는 역할을 맡습니다. 주로 인증과 인가에 사용됩니다. Guard는 ExecutionContext(실행 컨텍스트)를 알고 있으며, Express와는 다르게 ExecutionContext를 통하여 request와 response를 받기 때문에 Middleware보다 더 똑똑합니다. Guards have a single responsibility. They determine whether a given request will be handled by the route handler or not, depending on certain conditions (like permissions, roles, ACLs, etc.) - NestJS..
오늘 한 일 NestJS 기본 정리 HTML 기초 강의 NestJS 기본 강의 정리 NestJS의 기본적인 미들웨어에 대해서 정리하였다. 앞으로 Guard, interceptor 등 다양한 enhancer를 정리해야 하는 시간이 필요 HTML 기초 강의 내가 만들고 싶은 웹 페이지를 구현하기 위해 HTML 강의를 정독 CSS, Java의 DOM과 바닐라까지 배워야 기본적인 Frontend 구현이 될 것 같다. 캘린더 형식과 깃 Backlog 형식의 todoLikst를 만들어볼려고 한다. 따라서 Front를 만져야할 필요성이 있기 때문에 Frontend를 공부중이며, 이를 통해 협업할 때도 큰 도움이 될 것 같다.
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/rcnAc/btsATkChVWX/TAnP9LfcKKkI7lPKVjNnFk/img.png)
Head 태그 정리 head는 title 웹문서의 제목, CSS의 링크, 파비콘, 그외 meta 데이터(설명, 작성자, 중요한 키워드와 같은 HTML에 대한 내용)을 포함합니다. 그 외 script 파일을 불러오거나 웹폰트 파일을 불러오는 link등이 head 사이에 삽입됩니다. html 문서에 대한 정보가 담겨있습니다. (문자 인코딩 및 문서 키워드, 설명 등) name 특성을 지정하면 전체 페이지에 적용되는 "문서 레벨 메타데이터"를 제공합니다. http-equiv 특성을 지정하면 유사한 이름의 HTTP 헤더가 제공하는 정보와 동일한 "프래그마 지시문"이 됩니다. charset 특성을 지정하면 문서 인코딩에 사용한 문자 인코딩을 나타내는 "문자 집합 선언"이 됩니다. itemprop 특성을 지정하면 ..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/b6W27c/btsASqQz5x2/igVKkwbzR4RAgz3J12p7l0/img.png)
HTML? HTML(HyperText Markup Language)은 웹을 이루는 가장 기초적인 구성 요소로, 웹 콘텐츠의 의미와 구조를 정의할 때 사용합니다. Hyper Text : 웹 페이지를 다른 페이지로 연결하는 링크를 의미한다. 즉 웹에서 자유롭게 오갈 수 있는 링크입니다. Mark Up : 태그 등을 이용하여 텍스트뿐만 아니라 이미지, 영상 등의 데이터 구조를 명시하는 언어의 한가지입니다. MDN의 인용을 참고하면 문서의 특정 텍스트 영역이 문단인지 목록인지 표의 일부인지 구분 할 수 있도록 의미를 부여하고, 헤더인지, 콘텐츠 컬럼인지, 네비게이션 메뉴인지 알수 있도록 논리적인 영역으로 구조화 하고, 이미지와 비디오 같은 콘텐츠를 삽입할 수 있게 해주는 요소들로 구성된 지극히 간단한 언어 즉,..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwIY7W/btsAVpJtJ7v/H5ssFaEZ5pBNCWuWFRyLoK/img.png)
Middleware 미들웨어는 클라이언트로 들어온 요청을 각 컨트롤러의 요청 핸들러가 처리하기 이전에 코드를 실행할 수 있는 기능을 의미합니다. NestJS 요청 생명주기에서 클라이언트로부터 들어오는 request가 가장 먼저 처리되는 핸들러입니다. Express에서 많이 다루던 분이면 알겠지만, Request와 Response의 중간에 위치하여 Middleware라고 불리며, Middleware는 요청과 응답 객체를 수정할 수 있습니다. 그리고 next()라는 메서드를 호출하여 그 다음 미들웨어 혹은 라우터가 작업을 처리할 수 있도록 하거나, 혹은 Request를 보류할 수도 있습니다. Nest의 Middleware는 기본적으로 Express와 동일하며 다음과 같은 기능을 수행합니다. 어떠한 코드를 살..