express.js란?
웹 서버를 만들때 필요한 것들이 대체로 구현되어있는 웹 framework.
==> node.js환경보다 서버를 더 쉽게 만들 수 있게 도와줌.
설치하기.
mkdir express-app //프로젝트를 만들 디렉토리 생성
npm init (?) //프로젝트를 생성
npm install --save express //설치
업그레이드.
npm install -g npm
express로 서버 구현하기
- 서버 만들 준비하기
1.익스프레스 모듈을 로드한다
2.익스프레스 함수 실행값을 담을 변수 선언
3.포트 번호 선언- 서버 내용
1.라우팅하기
app.METHOD(path, HANDLE함수)
의 형태를 지닌다.
const express = require('express'); //express 모듈 로드
const app = express(); //express 모듈 function
const port = 3000
app.get('/', (req,res) {
res.send('hello world!');
}
app.listen(port, ()=> {
console.log(`this is the ~~~~ ${port}`)
}
express 함수 실행값 express()은 , 익스프레스 모듈에서 내보내는 최상위함수로
익스프레스 메소드를 실행할 수 있음!!
==> 즉, express()함수를 가지는 app변수로 익스프레스 메소드를 실행할 수 있다는 뜻.
예시 app.get(){~~~}
[용어 설명 자세히]
1. 변수 app : express의 인스턴스
2. method: HTTP요청메소드/ 지정된 경로로 라우팅해주는 메소드
3. path : 경로
4. handle함수 : 라우트가 일치할 때 실행되는 함수임.
5. res.send('~~~'): 괄호 안에 HTTP body가 들어간다!! *요부분 중요*
var express = require('express')
var app = express()
app.post('/profile', function(req, res) => {
console.log(req.body)
})
body-parser
라는 모듈없이 ct가 보낸 요청바디를 읽어올 수 없다.var express = require('express')
var bodyParser = require('body-parser') //1.물론 install후 가져온다.
var app = express();
app.use(bodyParser().json()) //2.이렇게 app에 바인드 해준다.
app.post('/profile', function(req, res) => {
console.log(req.body)
})
단!!! 현재는 (express v4.16.0 이후) express에 내장되어 있어서body-parser
를 따로 인스톨 하지 않아도 가능하다.
var express = require('express')
var app = express();
app.use(express.json()) //이렇게 한방에 처리할 수 있다
// 결과로 {"key":"value"} 의 형태로 body를 가져온다
app.post('/profile', function(req, res) => {
console.log(req.body)
})
미들웨어함수란?
프로세스 중간에 관여하여 특정 역할을 수행한다.
요청오브젝트req
,
응답오브젝트res
그리고
그 다음 미들웨어 함수에 대한 액세스 권한
을 가지는 함수임.
여기서그 다음 미들웨어 함수
는 일반적으로next
라는 이름의 변수로 표시됨.
app.use()
및 app.METHOD()
함수를 이용하여 미들웨어를 app 오브젝트의 인스턴스에 바인드app.use()
로 사용함을 기억var app = express();
app.use((req,res,next) =>{
console.log('Time:', Date.now());
next();
})
==> 이처럼 콜백함수 인자에 req,res,next가 들어가고,
콜백함수 안에서 next()함수를 실행하지 않으면, break가 걸린다.
next()함수를 실행하여 다음으로 넘어갈 수 있다.