Express.js 미들웨어

JavaScript/Node.js 2022. 6. 24. 19:51

1. 미들웨어(Middleware) 요청 및 응답 객체, 다음 미들웨어 함수에 대한 접근 권한을 갖는 함수. 클라이언트에서 요청이 오고 그 응답을 보내기까지 그 사이에서 실행되는 각각의 콜백함수를 의미함. POST 요청의 body를 얻어내고자 할 때, 모든 응답에 CORS 헤더를 붙여서 전송해야 할 때, 요청 헤더에 사용자 인증 정보가 담겨있는지 확인하는 등 요청을 처리하기 전에 필요한 사전 작업을 하고자 할 경우, 미들웨어를 이용하면 간단하게 구현할 수가 있음. (req, res, next) => { /* ... */ } 미들웨어는 HTTP Request 객체, Response 객체, 다음에 실행될 미들웨어를 가리키는 next 3개의 parameter를 가지는데 함수 블록 안에서 Request, Res..

Article Thumbnail
Node.js fs 모듈 사용해보기

JavaScript/Node.js 2022. 6. 22. 19:42

1. fs/Promise API const { open } = require('fs/promises'); 동기적(Synchronous)으로 작동하는 fs 모듈도 있지만 비동기적(Asynchronous)으로 작동하는 fs 모듈을 기준으로 설명함. 2. FileHandle 인스턴스 fsPromises.open() 메서드의 반환값은 FileHandle 인스턴스로, 각각의 파일은 해당 파일을 식별하기 위한 숫자값인 File Descriptor(fd)를 가짐. 위 이미지에서 파일의 fd 값은 30. 또한, FileHandle 인스턴스는 Event Emitter의 인스턴스이고, 'close' 이벤트를 사용할 수 있음. const file = open('./test.json'); file.on('close', () ..

Article Thumbnail
Stream API와 Buffer

JavaScript/Node.js 2022. 6. 16. 22:43

1. Stream 네트워크를 통해 대용량의 데이터를 주고받을 상황이 생기게 되면서, 모든 데이터를 한번에 전송하고 한번에 처리하는 방식은 한계에 다다름. 수 GB나 되는 유투브 영상을 전부 받아와야 할 때까지 기다려야 한다면 얼마나 끔찍할까. 이러한 문제를 해결하기 위해 데이터를 잘게 쪼개 목적지에 데이터를 계속적으로 보내고, 목적지에서 잘게 쪼개진 데이터를 계속 처리하면 모든 데이터가 도착하기까지 기다릴 필요 없이 데이터에 접근하는 게 가능함. 이렇게 물줄기가 흐르듯이 데이터 조각들이 네트워크를 따라 흐르는 현상을 Stream이라고 함. Node.js에는 대표적으로 쓰기가 가능한 Writable Stream, 읽기가 가능한 Readable Stream, 쓰기/읽기 모두 가능한 Duplex Stream ..

Article Thumbnail
Node.js Events

JavaScript/Node.js 2022. 6. 16. 20:59

1. Events # Node.js의 API들은 비동기적으로 작동하는 이벤트를 기반으로 이루어져 있음. 특정한 이벤트를 발생시키는 객체를 Emitter, 해당 이벤트가 발생할 때 실행되는 함수를 listener라고 함. 그러한 Emitter 객체들은 모두 EventEmitter의 인스턴스인데, EventEmitter는 다음과 같은 특징을 가짐. A. Event Emitter에 setImmediate()와 같은 Asynchronous 함수를 사용한 이벤트 리스너가 없는 이상 자신에 등록된 이벤트 리스너를 등록된 순서대로 실행함.(Synchronous) B. Javascript에서와 같이 listener 함수가 반환하는 값은 무시됨. 2. Event Emitter # Javascript에서 eventTarg..

Article Thumbnail
Node.js를 이용한 웹서버 만들기

JavaScript/Node.js 2022. 6. 16. 17:58

1. HTTP 인터페이스 브라우저를 통해서만 이용할 수 있었던 HTTP 관련 기능을 사용할 수 있도록 만들어진 인터페이스. HTTP의 대표적인 객체로 Server, IncomingMessage, OutgoingMessage 등이 있음. 세 객체는 모두 Event Emitter의 인스턴스이기 때문에 해당 객체에 on() 메서드를 이용해 이벤트 핸들러를 등록해줄 수 있음. server.on('request', (request, response) => { /* ... */ }); // 서버에 요청이 들어왔을 때 request.on("data", (chunk) => { /* ... */ }); // 응답 객체에 body가 있을 때 response.on('close', () => { /* ... */ }); //..

Article Thumbnail
Express.js

JavaScript/Node.js 2022. 6. 9. 12:41

1. Express 프레임워크 시작하기 Express를 사용하려는 폴더에서 터미널을 열어 아래 명령어 실행 npm init -y npm install express --save 서버 코드에 변경이 있을 때마다 자동으로 서버를 재기동해주는 Nodemon 모듈도 설치하면 편함. npm install nodemon ※ Tip { // package.json "scripts": { "run": "nodemon --inspect /* 파일명 */.js", } } Node.js를 이용해 서버를 띄우면 커맨드창에 console.log() 결과가 출력되는데, 객체에 대한 자세한 정보를 얻고 싶을 때는 커맨드 창으로는 한계가 있음. 이때 명령어에 --inspect를 추가해주면 해당 로컬서버(ex. http://local..

Article Thumbnail