일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- linux
- Kotlin
- Scheduling
- docker
- MongoDB
- sequelize
- Android
- node.js
- DATABASE
- Util
- React
- AWS
- OS
- wireshark
- ubuntu
- HTML
- OOAD
- Express
- macos
- TypeScript
- postman
- Crawling
- python
- algorithm
- mysql
- Network
- mongoose
- css
- S3
- typeorm
- Today
- Total
목록
반응형
Node.js (22)
Seongwon Lim
이번 포스팅에서는 node.js 에서 AWS의 S3에 텍스트 파일을 업로드하고 업로드한 파일을 다운로드(읽기)하는 내용을 다룬다. 또한 S3 bucket은 생성된 이후를 다루기 때문에 버킷 생성에 관한 내용은 상세히 다루지 않는다. 다만, 버킷에 저장되어 있는 객체를 외부에서 접근할 수 있도록 하기 위해서는 버킷의 권한 설정이 필요하므로 버킷 생성 시 권한 설정에 대한 부분은 다룰 예정이다. 전체 공개된 버킷이 아닌 경우 외부에서 S3 Bucket에 접근할 때에는 IAM 사용자 권한이 필요하므로 IAM 사용자 생성에 관한 내용 또한 다루고자 한다. 버킷 생성 시 퍼블릭 액세스 차단 설정 위와 같이 버킷 권한을 설정하면 공개 키, 비밀 키를 이용하여 외부에서 버킷에 접근할 수 있다. AWS IAM 사용자 ..
What is Routing? 네트워크 안에서 통신 데이터를 보낼 때 최적의 경로를 선택하는 과정이다. 라우팅의 의미를 조금 쉽게 설명해보자면 예를 들어 https://www.youtube.com 주소가 있다고 가정해보면 유튜브 홈페이지 하위에는 구독, 탐색, 보관함 등과 같이 다양한 하위 페이지가 존재한다. 예를 들어, http://www.youtube.com/feed/explore는 유튜브의 탐색 경로이며 http://www.youtube.com/feed/subscriptions는 유튜브의 구독 경로 http://www.youtube.com/feed/library는 유튜브의 보관함 경로이다. 이렇게 최상위 디렉토리 밑에 여러가지 하위 디렉토리가 있을 수 있으며 하위 주소로 연결을 가능하게 해주는 과정..
What is dotenv? Dotenv is a zero-dependency module that loads environment variables from a .env file into process.env. Storing configuration in the environment separate from code is based on The Twelve-Factor App methodology. 직역하면 dotenv는 .env 파일에서 process.env로 환경 변수를 로드하는 제로 종속성 모듈이라고 설명하고 있다. dotenv는 프로젝트를 개발할 때 사용되는 Key값, 데이터베이스 비밀번호 등과 같이 공개적으로 제공하기에 민감한 정보들을 외부로 노출시키지 않도록 도와주는 모듈이다. 해당 모듈을 ..
서론 이번 포스팅 글에서는 이전에 구현한 라우팅을 이용해서 API를 구현할 때 발생하는 undefined error 를 해결하는 방법에 대해서 살펴보고자 한다. 익스프레스 환경에서도 req.body에 JSON 데이터를 담아서 보낼 때 undefined 에러가 발생하는 경우가 있었고 이 경우에는 body-parser 모듈을 이용해서 해결했었다. 익스프레스와 달리 코아에서도 코아 환경에서 사용할 수 있는 body-parser 모듈을 제공하고 있는데 설치 방법과 사용법에 대해서 살펴보고자 한다. 모듈 설치하기 npm install koa-bodyparser --save 사용 방법 const bodyParser = require('koa-bodyparser'); app.use(bodyParser()); 모듈을 ..
서론 이번 포스팅 글에서는 노드의 새로운 프레임워크인 Koa framework에 대해서 이야기해보고자 한다. Koa 프레임워크를 이용하여 서버를 세팅 후 실행하는 예제와 Express와 비교했을 때 라우팅 방법이 어떻게 다른지 살펴보고 라우팅을 하는 방법까지 살펴볼 것이다. What is Koa? Node.js의 웹 프레임워크인 Express 개발팀에서 2016년도에 개발한 새로운 웹프레임워크이다. Express와 비교했을 때 설계된 뼈대가 적지만 탄탄하며 Express보다 모듈화되어있어 원하는 대로 Middle Customizing 하는 데에 유리하다. 또한, 비교적 최근 만들어졌기 때문에 ES6 문법 기반으로 작성되어 async/await 로 발생하는 오류를 try/catch 없이 잡아낼 수 있다. ..
1. 패키지 초기 설정 프로젝트 정보 및 의존성을 구성하는 packages.json 파일을 생성한다. npm init 명령어를 통해 설치할 수 있다. 필자는 ts-express라는 디렉토리에서 패키지를 생성했다. 패키지를 초기화 할 때는 다른 옵션을 건드리지 않고 엔터를 눌러 넘어갔다. 2. 필요 모듈 설치하기 익스프레스 모듈을 타입스크립트를 이용하여 사용하기 위해서는 몇가지 모듈이 필요하다. express, typescript, ts-node, @types/node, @types/express 5개의 모듈을 설치하여 개발에 필요한 모듈을 설치한다. 그리고 추가적으로 nodemon 모듈도 설치하여 서버를 껐다 키지 않아도 알아서 서버를 다시 시작해주는 모듈을 추가로 설치한다. npm install exp..
서론 이번 글에서는 타입스크립트 환경에서 비밀번호 암호화를 하는 방법을 다뤄보고자 한다. 그리고 로그인을 할 때 사용자가 입력한 비밀번호와 DB에 저장된 암호화된 비밀번호가 일치하는지 알아보는 방법을 다룬다. 자바스크립트 기반으로 Bcrypt를 다루는 법은 여기를 참고하면 좋을 것 같다. 모듈 설치하기 npm install @types/bcrypt --save 자바스크립트와 다르게 타입스크립트는 @types/bcrypt를 설치해주어야 한다. 사용 방법 설치한 모듈을 사용하려면 import bcrypt from "bcrypt"; 를 상단에 선언한다. 이제 회원가입의 경우를 예시로 들어 사용법을 살펴보기로 한다. 입력받은 비밀번호를 암호화 할 때에는 genSalt(), hash() 메서드를 이용한다. 예를 ..
서론 여태까지 진행한 예제들은 타입스크립트 기반으로 개발 환경을 구성하고 ts-node 모듈을 이용하여 직접 ts파일을 빌드하여 실행했다. 이번에는 ts파일을 직접 실행하는 것이 아니라 ts 파일을 컴파일하여 생성된 js파일을 가지고 실행하는 것을 알아보고자 한다. 실제 프로젝트에서 런타임을 할 때에는 대부분의 경우가 javascript 파일을 실행하기 때문이다. tsconfig.json 수정하기 { "compilerOptions": { "lib": [ "es5", "es6" ], "target": "es5", "module": "commonjs", "moduleResolution": "node", "outDir": "./build", // 이전에 정의 안했다면 정의하기 "rootDir": "./src"..
서론 이전 포스팅 글에서는 index.ts 파일에서 User 테이블에 CRUD를 하는 미들웨어를 모두 구현했었다. 그러나 실제 프로젝트를 진행하는 경우 테이블의 개수가 더욱 많아지고 프로젝트 구조는 더욱 복잡해진다. 따라서 우리는 프로젝트를 진행할 때 테이블(혹은 기능)별로 파일을 분리하는 습관을 가져야 한다. 그래서 이번 포스팅 글에서는 자바스크립트와 달리 타입스크립트 환경에서는 어떻게 라우팅을 하는지 간단하게 알아보고자 한다. 시리즈 1,2 내용에서 다룬 내용을 기반으로 진행하는 내용이므로 개발환경 설정이 되지 않은 분들은 시리즈1, 시리즈2를 참고하면 좋을 것 같다. 또한 타입스크립트 기반이 아닌 Javascript + Express 기반 라우팅 사용법을 알아보고자 하는 분들은 여기를 참고하면 좋을..
서론 이전 시간에는 Express 개발 환경에서 TypeORM을 구성하는 방법을 알아보았다. 이번 글에서는 스키마에 생성되어 있는 테이블에 데이터를 삽입, 삭제, 수정, 조회 하는 방법을 예시를 통해서 알아보고자 한다. TypeORM 개발 환경을 세팅하지 않은 분들은 여기를 참조하면 좋을 것 같다. 먼저 이전 포스팅 글에서 구현했던 index.ts 파일의 코드를 다음과 같이 수정했다. app.listen() 함수 수정하기 app.listen(3000, () => { console.log('Starting Server with 3000 port'); createConnection().then(async connection => { console.log("디비 연결 성공"); }).catch(error =>..