일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- typescript
- html
- 변수
- Deep Dive
- LifeCycle
- JWT
- REST API
- MySQL
- java
- node.js
- 프로그래머스
- queue
- 인접리스트
- javascript
- nestjs
- 자료구조
- 인접행렬
- Spring
- bean
- GraphQL
- css
- 코딩테스트
- OOP
- 알고리즘
- TIL
- logger
- 탐욕법
- winston
- Interceptor
- Today
- Total
목록분류 전체보기 (227)
처음부터 차근차근
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/?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/?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/?fname=https://blog.kakaocdn.net/dn/bwIY7W/btsAVpJtJ7v/H5ssFaEZ5pBNCWuWFRyLoK/img.png)
Middleware 미들웨어는 클라이언트로 들어온 요청을 각 컨트롤러의 요청 핸들러가 처리하기 이전에 코드를 실행할 수 있는 기능을 의미합니다. NestJS 요청 생명주기에서 클라이언트로부터 들어오는 request가 가장 먼저 처리되는 핸들러입니다. Express에서 많이 다루던 분이면 알겠지만, Request와 Response의 중간에 위치하여 Middleware라고 불리며, Middleware는 요청과 응답 객체를 수정할 수 있습니다. 그리고 next()라는 메서드를 호출하여 그 다음 미들웨어 혹은 라우터가 작업을 처리할 수 있도록 하거나, 혹은 Request를 보류할 수도 있습니다. Nest의 Middleware는 기본적으로 Express와 동일하며 다음과 같은 기능을 수행합니다. 어떠한 코드를 살..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/6cw65/btsAPIdnxmL/VLZ7ka6w7CfAMiyZ7BNLsk/img.png)
NestJS Request Lifecycle 이번 글에서는 NestJS Application에서 어떠한 Request가 오고 나서 Response의 생명주기를 다룹니다. NestJS는 Node.js의 Express가 해결해주지 못했던 아키텍쳐에 대한 고민을 해결하기 위해 VueJS, AngularJS 등을 참고하여 만든 백엔드 프레임워크입니다. 그렇기 때문에 NestJS에는 클라이언트의 요청을 처리하기 위해 프레임워크가 제공하는 일련의 생명주기가 존재합니다. 위 그림을 예시로 봤을때 큰 틀에서 보면 Middleware -> Guard -> Interceptor -> Pipe -> Controller -> Interceptor 이러한 순서대로 처리됩니다. 그리고 각 단계에서 global, controlle..
Rest API 중심 규칙 Rest API 설계 시 가장 중요한 항목은 다음의 2가지로 요약할 수 있다. URI는 정보의 자원을 표현해야 한다. 자원에 대한 행위는 HTTP Method(GET, POST, PUT, DELETE)로 표현한다. 다른 것들은 다 잊어도 위 내용은 항상 지켜야 한다. 참고 리소스 원형 도큐먼트 : 객체 인스턴스나 데이터베이스 레코드와 유사한 개념, 간단하게 문서 혹은 객체로 이해 컬렉션 : 서버에서 관리하는 디렉터리라는 리소스, 문서들의 집합으로 이해하면 편하다. 스토어 : 클라이언트에서 관리하는 리소스 저장소 1. URI는 정보의 자원을 표현해야 한다. resource는 동사보다는 명사를, 대문자 보다는 소문자를 사용한다. resource의 도큐먼트 이름으로는 단수 명사를 사..
오늘 한 일 NestJS 기본 정리 GraphQL 정리 진행 REST API 설계 원칙 기업 지원 NestJS 기본 정리 NestJS의 기본 중 Controller, Provider, Module을 정리하였다. 기본을 적으면서, 내가 부족한 것들이 무엇인지 깨달았다. 기본적인 내용이기에, 빠르게 공부해야 겠다는 생각을 하였다. NestJS 프로젝트를 진행하면서, 부족한 기본기들을 느껴 공식 문서를 확인하고 공부를 진행했다. 아직 해야할 게 많지만, 천천히 하나씩 공부하면 될 것이라는 판단이 느껴졌다. GraphQL 정리 GraphQL을 정리하면서 왜 이것을 사용하는지 깨달았다. RestAPI의 Overfetch, underfetch 문제를 단순하게 해결하고, 한번의 호출을 통해 많은 데이터를 가져온..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/di9OaZ/btsAULMpZu3/mHejV8gqjdedTlDhdc4v6K/img.png)
Module이란? Module은 Nest가 Application structure를 Organize하는데 사용되는 Metadata를 제공한다. Nest에는 기본적으로 Root Module이라는 것이 존재한다. 루트 모듈은 Nest가 애플리케이션 그래프(Nest가 module 과 Provider의 relationship & dependencies를 해결하는데 사용되는 내부 date 구조)를 구축하는데 사용하는 시작점이다. 또한 Nest에서는 모듈 간 연결이 효율적으로 가능하다. root module 외에도 추가로 밀접하게 연관된 기능들을 모아 여러개의 모듈을 구성하는 것을 권장하며, Nest에서는 이를 효율적으로 가능하도록 도와준다. @Module 데코레이터는 Nest가 App 구조를 만들 때 사용할 수 ..