TIL : 210701_목_(server_express)
오늘 배운것
- express.js 로 좀 더 쉽게 서버를 구현하기
- 미들웨어
- body-parser 현재는 express에 내장되어있는것으로 요청바디를 읽어올 수 있음 !!
Express.js
- node.js = 코드를 실행할 수 있는 하나의 방법. js의 런타임이다.
- routing = 특정 엔드포인트에 대한 ct의 요청에 앱이 응답하는 방법을 결정하는 것.
(즉, 요청받은 메소드에 따라 응답방식을 다르게 한다는 뜻으로 해석됨)
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.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가 들어간다!! *요부분 중요*
- body-parser
express사용하는 예시를 가져와보자
- express를 사용하는 방식으로!! 코드를 짜본다.
참고: req.body로 ct가 보낸 요청바디를 가져올 수 있다.
- express를 사용하는 방식으로!! 코드를 짜본다.
var express = require('express')
var app = express()
app.post('/profile', function(req, res) => {
console.log(req.body)
})
- console.log(req.body)라인에서 undefined가 뜨는 에러가 생김
왜?body-parser
라는 모듈없이 ct가 보낸 요청바디를 읽어올 수 없다.
- console.log(req.body)라인에서 undefined가 뜨는 에러가 생김
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)
})
미들웨어 middleware
미들웨어함수란?
프로세스 중간에 관여하여 특정 역할을 수행한다.
요청오브젝트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()함수를 실행하여 다음으로 넘어갈 수 있다.
Author And Source
이 문제에 관하여(TIL : 210701_목_(server_express)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@beablessing/TIL-210701목serverexpress저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)