FrameWork
-
Next.js custom decorator만들기FrameWork/Nest.js 2022. 8. 7. 15:15
ExecutionContext(실행Context) (data: unknown, ctx: ExecutionContext) => { const response = ctx.switchToHttp().getResponse(); return response.locals.jwt; } 실행 context이다. switchToHttp(),switchRpc(),switchToWs()같은 것들이 있는 이유는 Nest.js 프레임워크를 사용할 때 HTTP server만 가능한 것이 아니라 동시에 한 server안에서 웹소켓,Rpc,HTTP server 이 세가지 종류를 동시에 돌릴 수 있다. 그것들을 모두 하나의 실행 context에서 관리를 하고, 하나의 실행 context안에서 만약에 3개가 동시에 돌아가고 있다고 가정..
-
Nest.js 커스텀 Middleware 만들기FrameWork/Nest.js 2022. 8. 4. 17:00
Request와 Response 변수를 사용하는 경우 @ApiResponse({ status: 200, description: '성공', type: UserDto, }) @ApiOperation({ summary: '로그인' }) @Post('login') login(@Req() req) { return req.user; } 웬만하면 Request와 Response 객체는 사용하지 않는 것이 좋다. 그렇게 되면 어떤 특정한 플랫폼에 종속되서 나중에 바꾸기도 어려워지고 test하기도 어려워진다. 보통 express의 경우 res.locals.jwt에 jwt token을 많이 넣는다. express에서는 res.locals가 middleware간에 공유할 수 있느 변수 역할을 해주기 때문이다. custorm..
-
Express 미들웨어에 중요한 특징FrameWork/Express.js 2022. 8. 4. 15:12
Middleware callback 함수의 특징 import express from "express"; const app = express(); app.get( "/", (req, res, next) => { console.log("first"); }, (req, res, next) => { console.log("first2"); } ); app.get("/", (req, res, next) => { console.log("second"); }); app.listen(8080); 등록한 callback함수는 누가 먼저 등록했는 지가 정말 중요하다. 특정한 URL에 대해서 특정한 처리를 하는 callback함수에 대해서 등록을 했어도 또 동일한 URL에 대해서도 또 한번더 등록할 수 있다. 우리가 등록하..
-
Express 서버 만들기 ApplicationFrameWork/Express.js 2022. 8. 3. 16:13
개발의 존성을 위한 nodemon npm i nodemon --save-dev 현재 개발 computer에서는 nodemon이 global로 설치가 되었지만, 프로젝트를 다른 개발자와 공유했을 때 그 개발자의 computer에는 nodemon이 없을 수도 있으므로 위 터미널 명령어로 개발자 mode에서는 nodemon이 필요하다는 것을 명시해준다. 그 뒤에 package.json에 들어가면 "devDepsendencies"에 nodemon이 추가 된 것을 확인 할 수 잇다. 초간단 server 구축하기 import express from "express"; const app = express(); app.listen(8080); computer에는 IP가 있고 여러개의 port가 있다. 그 port중에 ..
-
Express 개요FrameWork/Express.js 2022. 8. 3. 11:34
Express 사용의 기본 const express = require('express') const app = express() app.get('/gets',function(req,res,next)){ res.send(...) } app.post('/posts',function(req,res,next)){ res.send(...) } app.listen(8080) application에서 'express'를 import한 다음에 express 생성자 함수를 이용해서 app을 만든다. app의 get메서드의 '/gets'라는 url에 대해서 등록한 callback함수가 호출되도록 만들 수 있고 get,post,put,delete에 관한 것을 개별적으로 해당하는 callback을 등록할 수 있다. 그리고 l..
-
Multer와 미디어 파일 서비스(img,mp3,mp4) 1FrameWork/Nest.js 2022. 7. 30. 10:42
File upload by Multer Nest.js에서 파일을 upload하려면 multer 미들웨어 패키지를 사용해야 한다. multer는 주로 HTTP post 요청을 통해서 파일을 업로드 한다. multipart/form-data 형식으로 게시된 데이터를 처리한다. *multipart/form-data : HTTP 통신방식에서 binary 데이터를 주고 받을때 사용하는 form 이다. Header- ContentType 보통 API로 data를 주고 받을 때 Content-Type은 위 그림과 같다. 단일 file example @Post('upload') @UseInterceptors(FileInterceptor('file')) uploadFile(@UploadedFile() file: Expr..
-
Nest.js Intercepters(AOP 패턴)FrameWork/Nest.js 2022. 7. 24. 14:02
Intercepters intercepters는 AOP(Aspect Oriented Programming : 관점 지향 프로그래밍)기술에서 영감을 받은 기능세트이다. AOP는 횡단 관심사의 분리(cross-cutting concern)를 허용하므로써 모듈성을 증가시키는 것이 목적인 프로그래밍 패러다임이다. 핵심기능이 위 그림과 같이 4개가 있다고 가정하자, 기능 하나하나는 module안에 있는 controller이다. 쭉 code를 그렇게 짰다고 가정해도, 각각의 핵심기능을 가진 controller에서 재사용 되면서, 공통되는 기능역시 존재한다. 가장 적합한 예로 logging 기능이 있다. controller가 각각의 핵심기능에 대해서 모듈별로 나눠져 있지만 그 각각의 모듈이 공통적으로 logging이..
-
Nest.js Pipes(변환, 유효성 검사)FrameWork/Nest.js 2022. 7. 11. 17:15
Pipes Pipes에는 2가지 사용사례가 있다. 변환 : 입력 data를 원하는 형식으로 변환할 경우 (예: 문자열에서 정수로) 유효성 검사 : 입력 data를 평가하고 유효하면 변경 없이 전달하지만 그렇지 않은 경우는 Exception을 발생시킨다. Object 형태로 전달되는 @Param() Object 의 속성을 @Param() 문자열 인자로 전달한 경우 ParseIntPipe를 이용하여 전달값 형변환 Pipe가 validation Error를 내는 경우 Pipes and Filters Pattern 일반적인 경우 유효성 검사 data가 들어왔을 때 즉 사용자가 Request를 했을 때 해당하는 메서드가 수행이 될 것이다. 이를 테면 그 data에 대해서 유효성 검사도 하고 변환도 수행하는 Tas..