[node.js의 미들웨어]
node.js에서 미들웨어는 req, res, next를 가진 함수.
즉 클라이언트의 요청을 처리하기 전이나 처리 한 후에 공통으로 해야 할 작업을 미리 만들어두고 사용하는 것.
req
클라이언트에서 오는 요청 정보가 담긴 객체
res
서버가 응답해주는 응답 정보가 담긴 객체
next
next 함수를 호출하면 현재 미들웨어에 이어서 다음 미들웨어를 실행합니다.
[fs]
파일 처리와 관련된 전반적인 작업을 하는 모듈
fs.readFile(filename, [options], callback)
=> filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출합니다. (비동기적)
fs.readFileSync(filename, [options])
=> filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환합니다.
(동기적)
fs.writeFile(filename, data, [options], callback)
=> filename의 파일에 [options]의 방식으로 data 내용을 쓴 후 callback 함수를 호출합니다.(비동기적)
fs.writeFileSync(filename, data, [options])
=> filename의 파일에 [options]의 방식으로 data 내용을 씁니다.
(동기적)
[Dotenv]
환경변수를 .env 형태로 저장하고, process.env로 로드하는 의존성 모듈이다.
사용 이유: 오픈 소스에 민감한 정보가 그대로 노출되면 보안상 큰 위험이 따르므로
민감한 정보는 소스코드 밖 환경 변수에 저장해놓고, 필요할 때 불러오는 것이 좋은 방법이기 때문이다.
dotenv.config(경로) : 경로에 원하는 위치를 적으면 직접 env 파일을 생성할 디렉토리를 설정할 수 있으며, 경로를 작성하지 않으면 현재디렉토리 내부에 생성된다.
process.env.변수이름 : 환경변수에 저장되어있는 변수들은 이 명령어로 불러들일 수 있다.2
환경변수는 key-value 형태로 저장 되며, 불러들일 때는 process.env[key] 형태로 부른다.
[morgan]
morgan은 요청과 응답에 대한 정보를 콘솔에 기록한다.
개발 환경에서는 dev를, 배포 환경에서는 combined를 이용하면 좋다고 하는데, 아직 배포까지 갈 일이 없으니 일단 아직은 dev만 활용하면 되겠다.
Dev는 res에 Efkk 색상이 입혀진 축약된 로그를 출력한다.
그 밖에도 combined, common, short, tiny 등의 옵션이 있다.
[multer]
web service 에서 파일을 업로드할려면 multipart/form-data 형태로 데이터를 전송해야 하는데, 이를 도와주는 미들웨어가 muter이다.
node에서 multer를 가지고 파일 업로드를 처리할 때는 4가지로 나누어서 처리힌다
1, none: 파일 업로드가 없을 때
2. single: 하나의 파일만 업로드 될 때
3. array: 한번에 여러 개의 파일이 업로드 가능한데 하나의 파라미터로 업로드
4. fields: 여러 개의 파일을 여러 개의 파라미터로 업로드 하는 경우 사용
=>파일 업로드 처리를 할 때 파일의 이름을 유일무이하게 변경하는 경우가 있는데,
이런 경우에는 UUID(유일한 문자열) 나 현재 시간을 파일 이름에 추가해서 생성하는 것이 일반적이다
=>실제 운영을 할 때는 애플리케이션 서버 디스크가 아닌 별도의 디스크(AWS 의 S3 서비스 나 Google의 Firebase 서비스 등)에 저장을 해야 한다.
=>저장을 할 때 디렉토리는 미리 만들어져 있어야 한다.
(참고링크)
https://wayhome25.github.io/nodejs/2017/02/21/nodejs-15-file-upload/
'카카오 클라우드 스쿨' 카테고리의 다른 글
| React (1) (0) | 2022.12.09 |
|---|---|
| [node.js] 쿠키와 세션의 차이 (0) | 2022.11.17 |
| [node.js]axios 라이브러리 (0) | 2022.11.17 |
| [node.js] 양방향 암호화 실습 (0) | 2022.11.16 |
| [node.js] Require 함수 (0) | 2022.11.16 |