Express 애플리케이션 생성기


Express 구조화된 애플리케이션을 생성하고 싶다면 express-generator를 사용하여 시작하면 된다.

일단 npm 패키지로 설치한다.

$ npm install express-generator -g


groupware-back-app이라는 Express 앱을 생성해보자.

$ express --view=pug groupware-back-app

   create : groupware-back-app\
   create : groupware-back-app\public\
   create : groupware-back-app\public\javascripts\
   create : groupware-back-app\public\images\
   create : groupware-back-app\public\stylesheets\
   create : groupware-back-app\public\stylesheets\style.css
   create : groupware-back-app\routes\
   create : groupware-back-app\routes\index.js
   create : groupware-back-app\routes\users.js
   create : groupware-back-app\views\
   create : groupware-back-app\views\error.pug
   create : groupware-back-app\views\index.pug
   create : groupware-back-app\views\layout.pug
   create : groupware-back-app\app.js
   create : groupware-back-app\package.json
   create : groupware-back-app\bin\
   create : groupware-back-app\bin\www

   change directory:
     > cd groupware-back-app

   install dependencies:
     > npm install

   run the app:
     > SET DEBUG=groupware-back-app:* & npm start


생성된 디렉토리로 이동 후 종속성을 설치한다.

$ cd groupware-back-app
$ npm install

MacOS 또는 Linux에서 다음 명령으로 앱을 실행

$ DEBUG=groupware-back-app:* npm start

Windows 명령 프롬프트에서 다음 명령으로 앱을 실행

> set DEBUG=groupware-back-app:* & npm start

Windows PowerShell에서 다음 명령으로 앱을 실행

PS> $env:DEBUG='groupware-back-app:*'; npm start

http://localhost:3000/으로 접속해서 아래와 같이 출력한다면 정상적으로 실행한 것이다.

image


package.json에서 scripts.start 명령어가 express를 실행해주는 명령어인가보다. (전 포스팅에서 node app.js와 같다고 보면된다.)

{
  "name": "groupware-back-app",
  "version": "0.0.0",
  "private": true,
  "scripts": {
    "start": "node ./bin/www"
  },
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "express": "~4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11"
  }
}


bin디렉토리안에 www 파일을 보면 node 서버 구성 환경에 대한 코드들이 들어가 있다.

#!/usr/bin/env node

/**
 * Module dependencies.
 */

var app = require('../app');
var debug = require('debug')('groupware-back-app:server');
var http = require('http');

/**
 * Get port from environment and store in Express.
 */

var port = normalizePort(process.env.PORT || '3000');
app.set('port', port);

/**
 * Create HTTP server.
 */

var server = http.createServer(app);

/**
 * Listen on provided port, on all network interfaces.
 */

server.listen(port);
server.on('error', onError);
server.on('listening', onListening);

...
...
...


Express 애플리케이션 구조


image


기본 라우팅


라우팅은 URI(또는 경로) 및 특정 HTTP 요청 방법(GET, POST, PUT, DELETE)에 대한 클라이언트 요청에따라 애플리케이션이 응답하는 방식을 결정하는 방법을 말한다.

각 경로에는 경로가 일치할 때 실행되는 하나 이상의 처리기 기능이 있을 수 있다.

경로 정의는 다음과 같다.

참고: express 생성기로 만든 구조화된 애플리케이션이 아닌 초기 애플리케이션이라고 가정하고 진행한다.
[Node.js] Express API 서버 구축 - 설치 및 실행을 참고

app.METHOD(PATH, HANDLER)
  • app은 express의 인스턴스이다.
  • METHOD는 소문자로된 HTTP 요청 메서드이다.(get, post, put, delete)
  • PATH는 서버의 경로이다.
  • HANDLER는 경로가 일치할 때 실행하는 함수이다.

GET

app.get('/get', function (req, res) {
  res.send('get 방식입니다.')
})

POST

app.get('/post', function (req, res) {
  res.send('post 방식입니다.')
})

PUT

app.get('/put', function (req, res) {
  res.send('put 방식입니다.')
})

DELETE

app.get('/delete', function (req, res) {
  res.send('delete 방식입니다.')
})