카테고리 없음

[Express] Get Started

Grace 2023. 4. 19. 10:04

npm install express

// app.js (index.js)

const express = require('express')
const app = express()
const port = 3000 

app.get('/', (req, res) => {
  // 로직 작성
})

app.post('/', (req, res) => {
  // 로직 작성
})

app.put('/', (req, res) => {
  // 로직 작성
})

app.delete('/', (req, res) => {
  // 로직 작성
})

// app에서 3000번 포트로 연결
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

폴더구조

├── config
│		└── ...
├── controller
│		└── ...
│		└── index.js
├── middleware
│		└── ...
├── models
│		└── ...
│		└── index.js
│		└── sequelizeConfig.js
├── routers
│		└── ...
│		└── app.js
│		└── paramsList.js
│		└── swagger-output.json
│		└── swagger.js
├── util
│		└── ...
└── index.js

정적 파일 제공

// public이라는 이름의 디렉토리 제공
app.use(express.static('public'));

// public 디렉토리 내부의 파일 업로드
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html

/* 가상 경로(파일 시스템 내에 해당 경로가 실제로 존재하지 않는 경우)
    마운트 경로 지정 */
app.use('/static', express.static('public'));
/* 프로젝트 예시
    const path = require('path');
    ...
    app.use('/static', express.static(path.resolve('dist'))); */

path.join vs. path.resolve
path.join

path.join은 왼쪽에서부터 순차적으로 경로를 단순 조합하여 리턴한다.

  • path.join('foo/bar', '../baz/qux'); // 'foo/baz/qux'

path.resolve

path.resolve는 오른쪽 인자부터 경로를 확인한다.

만약 인자를 오른쪽에서부터 확인하다가, /dir 처럼 절대경로 구분자(/)가 앞에 있는 경우, 해당 인자를 root절대 경로를 리턴한다.

  • // '/foo' 왼쪽의 'qux' 인자는 무시된다.
    path.resolve('qux', '/foo', 'bar', 'baz'); // '/foo/bar/baz'

단, /foo가 루트 폴더가 아닌 경우, working directory를 기준으로 루트 폴더(/foo)까지의 경로를 붙여 절대경로로 반환한다.

  • // 현재 파일을 실행시키는 경로가 User/aaa/bbb/test.js인 경우,
    path.resolve('/foo', 'bar', 'baz'); // 'User/aaa/bbb/foo