본문 바로가기

Node.js

(14)
[Node.js 12강] 파일 업로드 하기 (multer 모듈 사용, 한번에 파일 여러개 업로드하기, 삽질한 결과 공유) 이번엔 nodejs에서 파일을 업로드하는 방법을 알아보도록 하겠습니다. 한번에 여러 이미지를 업로드하는 케이스를 개발했는데 상당히 삽질을 했습니다. 1개만 업로드 할 때는 쉽게 처리하는건 굉장히 쉬운데 말이죠. 1. multer 모듈 설치 npm install --save multer 2. HTML 구조 form 안에 input type="FILE"이 여러개 있을 수 있는 형태입니다. DB의 PK는 TEST_SN + Q_SN 형태로 저장됩니다. (갑자기 PK 구조를 언급한 이유는 뒤에 나옵니다.) form의 method는 POST, enctype은 'multipart/form-data'로 설정해야 합니다. ... ... 3. 라우트 파일 3.1 파일명이나 파일경로를 변경없이 사용하고자 할 경우 var m..
[Node.js] 이클립스(eclipse)에서 ejs 파일 가독성 높이기 위해 text 모드(포맷) 설정하는 방법 node.js 프로젝트를 이클립스를 이용해서 진행할 때 ejs 라는 Html 템플릿 엔진을 사용하게 됩니다. 2019/04/02 - [Node.js] - [Node.js 6강] html 템플릿 엔진 ejs 연동해서 서버에서 넘어온 데이터 사용하기 그런데 이클립스에서 ejs 파일은 아래처럼 전부 검정색 글씨로 나오기 때문에 코딩할 때 가독성이 떨어지고 자동완성 등이 안되는 불편사항이 있죠. 그래서 ejs 파일을 html 이나 jsp 와 동일한 파일 포맷으로 인식하도록 설정해야 합니다. 1. Window - Preferences 메뉴를 클릭 후 검색창에서 File Association을 입력하면 관련 메뉴(경로 : Generel - Editors - FileAssociation) 가 표시됩니다. 2. Fil..
[Node.js 11강] 모든(또는 특정)요청에 대한 공통로직을 처리하기 위해express next() 사용하기 이번엔 express의 next()함수를 이용해서 모든 요청 또는 특정URL 요청에 대한 공통로직으 처리하는 방법을 알아보겠습니다. 특히, 최종 호출되는 ejs에서 사용할 수 있도록 값을 세팅해서 다음 미들웨어 함수로 전달하는 방법도 알아보겠습니다. Express 애플리케이션 레벨 미들웨어에서 공통로직 추가 web.js(app.js)에 아래와 같이 추가하면 모든 요청에 대해 공통로직을 추가할 수 있습니다. next()를 호출하면 다음 라우터 레벨 미들웨어 함수를 호출합니다. (요청 URL에 맞는 라우팅을 찾아서 실행) var express = require('express'); var app = express(); app.use(function(req, res, next){ ..공통로직 처리.. next..
[Node.js 7강] 클라이언트-서버간 데이터(파라미터) 전송 방법과 REST방식 URL 설계 이제 Node.js에서 클라이언트에서 데이터를 전송하고 서버에서 데이터를 받아서 사용하는 방법을 알아보겠습니다. java + 스프링 프레임워크로 개발할 땐 편하게 파라미터를 받아서 사용했는데 Node.js에서는 데이터를 전송하는 방법에 따라 서버에서 사용하는 방법이 조금씩 다릅니다. 처음에 이것때문에 서버단에서 데이터가 계속 null로 찍혀서 한참을 고생했습니다. 클라이언트-서버간 데이터(파라미터) 전송 방법 req.query.파라미터명 클라이언트에서 get방식으로 데이터를 넘길 때 서버단에서 받는 형태입니다. //클라이언트 클럽상세 //서버 function(req, res){ var mberCnt = req.query.clubSn; } req.body.파라미터명 html form에서 post 로 전송한..
[Node.js 10강] 암호화된 cookie를 이용한 로그인/로그아웃 처리 이번에는 node.js에서 cookie를 사용하는 방법을 알아보도록 하겠습니다. cookie를 그냥 사용하면 보안에 취약하므로 암호화된 cookie를 사용하는 방법으로 알아보겠습니다. Cookie 사용을 위한 설정 Cookie-parser 모듈 설치 Express 프레임워크은 cookie-parser라는 모듈을 통해 cookie를 사용합니다. npm install cookie-parser --save web.js 설정 express 프레임워크에서 cookie parser를 사용할 수 있도록 web.js에 설정합니다. cookieParser(secret, options) 에서 첫번째 인자인 secret은 쿠키 서명에 사용되는 문자열 또는 배열을 의미(선택사항)하고, 두번째 인자 options는 쿠키에서 사..
[Node.js 9강] 외부서비스 API(네이버밴드) 적용하기 외부서비스API를 node.js에서 활용하는 방법을 알아보겠습니다. 여러 API 중 네이버밴드에서 제공하는 로그인 Open API를 적용하는 방법을 예제로 설명드릴게요 네이버 API 에 비교했을 때 네이버밴드 API 개발자 가이드는 설명이 군더더기 없이 너무 깔끔합니다. 각 개발언어별 샘플 가이드가 없더군요. 네이버밴드 API가 설명된 밴드 개발자 센터 홈페이지 https://developers.band.us/develop/guide/api 밴드 개발자 센터 열린 공간, 함께하는 기술, 경험의 공유. BAND 플랫폼이 애플리케이션 개발에 필요한 다양한 환경을 제공합니다. developers.band.us 밴드 개발자 센터에 가셔서 사용할 API에 대한 정보를 생성 및 확인했다 생각하고 진행하겠습니다. (..
[Node.js 8-2강] 다중쿼리 처리 방법, sql에 파라미터 매핑하는 다양한 방법 SQL에 파라미터 매핑하는 방법 1. 파라미터를 직접 하드코딩(비권장) 직관적이라 설명드릴 건 없네요. 하지만 보안 문제(SQL Injection)로 인해 비 권장합니다. var clubSn = req.params.clubSn; var sql = 'SELECT * FROM CLUB WHERE CLUB_SN = "' + clubSn + '";'; dbconn.query(sql, function(err, results, field){ .... }); 2. 파라미터 1개 자동 매핑 query() 함수의 두번째 인자에 파라미터 변수를 추가해주면 됩니다. 그러면 자동으로 sql의 ' ? ' 에 매핑되어 sql이 실행되는 거죠 var clubSn = req.params.clubSn; var sql = 'SELECT..
[Node.js 8-1강] mysql DB 연결하고 sql 결과 받아서 활용하는 방법 이번엔 node.js에 데이터베이스를 연결해서 활용하는 방법을 알아보도록 하겠습니다. 데이터베이스는 mysql을 사용했습니다. mysql 모듈 설치 명령프롬프트 창에서 mysql 모듈을 설치합니다. npm install mysql --save DB 접속정보 설정 DB 접속정보는 별도의 파일로 작성해서 필요한 js 파일에서 import해서 사용하도록 구성했습니다. db_info.js 로컬 DB와 운영 DB 정보가 다른 경우가 많으므로 별도로 구분해서 명시하고, hostname을 이용해서 각 서버환경에 맞는 접속정보를 리턴하도록 설정합니다. var mysql = require('mysql'); var os = require('os'); //호스트 이름을 가져오기 위한 모듈 var dbconnInfo = { ..
[Node.js 5강] express 서버 설정 및 기본 구조 설계 이번엔 express 설정 및 웹서비스의 기본구조 설계에 대해서 알아보겠습니다. Express 정의 및 주요기능 express 는 node.js를 위한 빠르고 개방적이며 간결한 웹 애플리케이션 프레임워크 입니다. 아래 주요기능을 보면 아시겠지만 웹서비스를 만드는데 필요한 기능을 제공하는 프레임워크로 보시면 되겠습니다. 주요기능 HTTP 통신 요청(Request; GET, POST, DELETE 등)에 대한 핸들러를 만든다. 템플릿에 데이터를 넣어 응답(response)을 만들기 위해 view의 렌더링 엔진과 결합(integrate)한다. 접속을 위한 포트나 응답 렌더링을 위한 템플릿 위치같은 공통 웹 어플리케이션 세팅을 한다. 핸들링 파이프라인(reqest handling pipeline) 중 필요한 곳..
[Node.js 4강] NPM을 이용해서 웹개발을 위해 필요한 모듈 설치 NPM 이란? node.js의 npm에 대한 개념과 npm을 이용해서 웹 개발을 할 때 필요한 모듈을 설치해도 록 하겠습니다. 전 Java를 이용해서 개발을 해왔기 때문에 라이브러리(jar)를 직접 추가하거나 maven을 이용해서 라이브러리를 추가했었는데 이런 방식보다도 훨씬 빠르고 편리하더군요. Node.js 공식 사이트에서는 node.js와 npm을 이렇게 정의하고있습니다. Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, Non 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다. NPM(Node Package Man..
[Node.js 3강] 이클립스(eclipse)에 node.js(NodeJS) 개발환경 설정 따라하기 오늘은 이클립스에 node.js 개발환경을 설정하는 방법을 알아보겠습니다. 아래 절차대로 따라하시면 node.js 개발할 수 있는 환경세팅은 금방 하실 수 있습니다. Node.js 설치 아래 주소로 이동해서 Node.js를 설치합니다. https://nodejs.org/ko/ Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 프로그램 다운로드 후 exe파일을 실행해서 프로그램 설치합니다. 설치는 쉬워요. next 계속 누르다가 마지막에 finish를 누르면 끝입니다. ㅎㅎ 이클립스에 Node.js 플러그인 설치 이클립스를 실행 후 window-Perspective - Open Perspect..
[Node.js 2강] 이클립스(eclipse) + nodejs + github + cafe24호스팅을 이용해서 실제 개발한 웹사이트 소개 node.js에 대한 연재를 하기 전에 node.js를 공부하면서 개발한 사이트를 먼저 소개하고자 합니다. 단순히 공부를 위해 node.js를 로컬PC에서 개발해보는 것과 실제 오픈할 웹서비스를 기획하고 개발하는 것은 천지차이입니다. 몇억 또는 몇십업 이상 규모의 공공기관 프로젝트를 해오다가 이런 조그마한 사이트를 만들려고 했을 땐 금방 만들겠거니 했습니다. 그런데 처음부터 끝까지 혼자서 개발하고 서비스를 오픈하는데 상당히 오랜 기간이 걸렸습니다. 우리가 학교에서 배운 것을 실제 프로젝트에서 써먹기 어려운 것처럼, 단순히 node.js를 책으로만 또는 인터넷 구글링을 통해 단편적으로 문법만 익히는 것보다는 한두페이지짜리 웹서비스라도 기획하고 개발하는게 훨씬 도움이 됩니다. 코드가 상당히 꼼꼼해지고, 시행..
[Node.js 1강]node js 란? 장점, 단점, 어떤 웹서비스에 사용해야할까? Node.js 란? Node.js는 위키백과에 아래와 같이 정의되어 있습니다. Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 자바스크립트를 활용하며 Non-blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다. Node.js와 관련된 핵심키워드는 아래와 같습니다. 구글 V8 자바스크립트 엔진 고성능 네트워크 서버 단일 쓰레드(Single Thread) 이벤트 루프(Event Loop) 기반 비동기 I/O 처리(Non-..
[Node.js 6강] html 템플릿 엔진 ejs 연동해서 서버에서 넘어온 데이터 사용하기 EJS 란?​ EJS는 Embedded JavaScript templating의 약어로서, 자바스크립트로 HTML 마크업을 생성할 수 있는 간단한 템플릿 언어입니다. (java개발자라면 익숙한 JSP와 동일한 역할을 한다고 보시면 됩니다.) 형태의 태그를 이용해서 HTML 중간중간 필요한 로직 및 데이터를 추가할 수 있으며, 특히, for, if 문을 통해 서버 데이터를 바로 html로 만들 수 있다는 게 가장 좋습니다. EJS를 이용해서 Node.js 서버로부터 가져온 데이터를 html을 생성할 때 바로 사용할 수 있습니다. 필요한 서버 데이터는 ajax 형태로 호출해서 json으로 받은 후에 html 에 추가하는 방법도 있긴 하지만 매번 이런 식으로 데이터를 세팅하는 것은 은근히 귀찮습니다. EJS ..