Node.js 웹 애플리케이션 프레임워크로 모듈을 불러와서 더 간편하게 서버를 구축하게 해줄 수 있는 툴이다. 지난 시간에 node.js를 사용해봤는데 express를 통해 쉽고 간결하게 만들고자 한다.
처음에 npm을 설치를 하면 package.json과 그 다음 express를 설치하여 생성된 모듈을 확인할 수 있다. 그러면 여기서 가져온 모듈을 사용해서 서버를 구축한다. 우선 파일을 생성했고 express1.js에서 서버를 만들고자 한다.
//모듈을 불러온다는 뜻
const express = require("express");
const server = express();
server.listen(3000,()=>{
console.log("running")
});
const express = require('express')
const app = express()
const port = 3000
//여기서도 get요청을 하기 위해 기본 경로 '/'와 요청 응답을 인자로 가진다.
//그리고 send를 통해 보낼 수 있다.
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
app.METHOD(PATH, HANDLER)
get, post, put, head, delete, options, trace, copy, lock, mkcol, move, purge, propfind, proppatch, unlock, report, mkactivity, checkout, merge, m-search, notify, subscribe, unsubscribe, patch, search 및 connect.
//공식 문서 예시
app.route('/book')
.get(function(req, res) {
res.send('Get a random book');
})
.post(function(req, res) {
res.send('Add a book');
})
.put(function(req, res) {
res.send('Update the book');
});
미들웨어는 쉽게 말해서 중간에 하는 역할이다. 요청 메서드는 수 많은 미들웨어를 거친 후에 실행되는 것이다. 미들웨어를 쓸 때는 꼭 next()를 표시해야 한다. 그래야 다음 미들웨어를 실행할 수 있게 된다.
__dirname은 현재 파일 경로이다.
//미들웨어를 사용하겠다.
server.use(express.static(__dirname))
//그 다음 미들웨어를 수행하게 만든다.
server.use((req,res,next)=>{
next()
})
다시 연습으로 돌아와서 아까 만든 파일에 연습으로 만든 파일에 express모듈을 설치하고 서버를 콘솔로 확인해 본 뒤 브라우저 localhost:3000으로 확인해보았다.
express 모듈 추가하면 package.json에서 확인할 수 있다.
//다음은 내가 연습으로 작성한 코드
const express = require("express");
const server = express();
//미들웨어를 사용하겠다.
server.use(express.static(__dirname))
//그 다음 미들웨어를 수행하게 만든다.
server.use((req,res,next)=>{
next()
})
server.get('/',(req,res)=>{
res.status(200).sendFile(__dirname + '/idx.html')
//요청이 들어오면 현재있는 파일을 바로 보낼 수 있다.
//현재 경로 __dirname
})
server.listen(3000,()=>{
console.log("running")
});
콘솔에 찍은 내용을 터미널에서 확인하고 브라우저로 localhost:3000에 들어가 확인해보았다.
나는 idx.html과 연결시켰기때문에 html에서 작성한 글귀가 브라우저에 나타난다.
server.get('/',(req,res)=>{
res.status(200).sendFile(__dirname + '/idx.html')
})