npm init -y
npm install express
Node.js
위에서 동작하는 웹 프레임 워크이다.const express = require("express")
const app = express()
Express를 실행 시키겠다는 의미이다.
Express를 모듈을 실행해 app 변수에 넣는다.
app.listen(3000, ()=>{
console.log("Server Start")
})
지정된 포트 및 호스트에서 연결 요청을 대기하고 요청이 들어오면 연결을 해준다.
port
를 설정해야 지정할 수 있다.511
이다.port
와 host
를 설정해야 지정할 수 있다.port
와 host
,backlog
를 지정하지 않고 callback만 지정할 수 있다.app.get("/", (req, res) => {
res.send("Hello World!")
})
HTTP GET 요청을 받고 요청받은 경로와 지정한 경로가 일치하면 콜백 함수를 실행한다.
/
(root path)다.app.get("/", (req, res, next) => {
console.log("First")
next()
}, (req, res) => {
console.log("Second")
res.send("Hello World!")
});
callback 함수를 여러개 넣을 수 있다.
다음 미들 웨어가 실행될 수 있도록 next를 인자로 받아서 호출해줘야 한다.
next를 호출해주지 않으면 다음 미들 웨어로 넘어가지 않는다.
실행 결과는 브라우저에서 localhost:3000
으로 들어오면 콘솔에 "First"와 "Second"가 순차적으로 찍히고 브라우저에 "Hello World!"가 보여지게 된다.
app.post("/", (req, res) => {
res.send("Hello World!")
})
HTTP POST 요청을 받고 요청받은 경로와 지정한 경로가 일치하면 콜백 함수를 실행한다.
- path
- 서버에서 지정한 경로(문자열)를 의미한다.
- 기본값은
/
(root path)다.- 클라이언트가 요청한 경로와 일치하면 미들웨어 기능이 호출된다.
- callback
- 클라이언트가 요청한 경로와 지정한 경로가 일치하면 실행되는 함수이다.
- 미들웨어 기능을 한다.
app.use("/", (req, res, next) => {
console.log("Hello")
next()
};
모든 HTTP Method 요청에 요청받은 경로와 지정한 경로가 일치하면 콜백 함수를 실행한다.
/
(root path)다.미들웨어 기능은 순차적으로 실행되므로 순서가 중요하다!
app.set("title", "My Site")
app 객체안에 settings 속성에 새로운 속성을 지정한다고 볼 수 있다.
app.set("view engine", "html")
console.log(app.get("title"))
app.settings 객체에서 값을 가지고 올 수 있다.
console.log(app.settings)
app.use(express.static('public'));
CSS, Javascript 파일등 정적 파일을 제공하기 위해 사용한다.
app.use('/static', express.static('public'))
public 디렉토리 안에 있는 파일을 로드 할 때 가상의 경로인 static을 붙여 줘야 로드가 된다.
http://localhost:3000/static/css/style.css
const path = require('path')
app.use('/static', express.static(path.join(__dirname, 'public')))
node를 다른 디렉토리에서 실행하는 경우에는 위처럼 절대 경로를 사용하는게 안전하다.
app.use(express.urlencoded({extended: false}))
요청의 body에 있는 데이터를 해석해서 req.body 객체로 만들어주는 Express에 내장된 미들웨어다.
주로 Form 데이터나 AJAX 요청의 데이터를 처리한다.
이미지, 동영상, 파일 데이터는 처리하지 못한다.
false
: Node의 querystring 모듈을 사용하여 쿼리스트링을 해석한다.true
: qs 모듈을 사용하여 쿼리스트링을 해석한다. (querystring 모듈의 기능을 확장한 외장 모듈)res.status(404).send('Not Found')
응답에 대한 HTTP 상태코드를 설정한다.
res.send(Buffer.from("hello"))
res.send({ apple : "mac"})
res.send("<h1>Hello World</h1>")
res.status(404).send('Not Found')
HTTP 응답을 보낸다.
res.redirect(301, 'https://velog.io/@cloudcoke')