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