TIL : 210701_목_(server_express)

beablessing·2021년 7월 1일
0

TIL

목록 보기
5/33
post-thumbnail

오늘 배운것

  • 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 함수 실행값 express()은 , 익스프레스 모듈에서 내보내는 최상위함수로
익스프레스 메소드를 실행할 수 있음!!

==> 즉, express()함수를 가지는 app변수로 익스프레스 메소드를 실행할 수 있다는 뜻.
예시 app.get(){~~~}

[용어 설명 자세히]
1. 변수 app : express의 인스턴스
2. method: HTTP요청메소드/ 지정된 경로로 라우팅해주는 메소드
3. path : 경로
4. handle함수 : 라우트가 일치할 때 실행되는 함수임.
5. res.send('~~~'): 괄호 안에 HTTP body가 들어간다!! *요부분 중요*

  • body-parser

express사용하는 예시를 가져와보자

    1. express를 사용하는 방식으로!! 코드를 짜본다.
      참고: req.body로 ct가 보낸 요청바디를 가져올 수 있다.
var express = require('express')
var app = express()

app.post('/profile', function(req, res) => {
  console.log(req.body)   
})
    1. console.log(req.body)라인에서 undefined가 뜨는 에러가 생김
      왜? 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)
})

미들웨어 middleware

미들웨어함수란?
프로세스 중간에 관여하여 특정 역할을 수행한다.
요청오브젝트req,
응답오브젝트res 그리고
그 다음 미들웨어 함수에 대한 액세스 권한을 가지는 함수임.
여기서 그 다음 미들웨어 함수는 일반적으로 next라는 이름의 변수로 표시됨.

  • 미들웨어 사용하기
  1. app.use()app.METHOD()함수를 이용하여 미들웨어를 app 오브젝트의 인스턴스에 바인드
  2. 마운트 경로가 없는 미들웨어 함수는 app.use()로 사용함을 기억
  3. 또한 그러한 경우에는 앱이 요청을 수신할 때마다 실행된다.
var app = express();

app.use((req,res,next) =>{
	console.log('Time:', Date.now());
  	next();
}) 

==> 이처럼 콜백함수 인자에 req,res,next가 들어가고, 
    콜백함수 안에서 next()함수를 실행하지 않으면, break가 걸린다. 
    next()함수를 실행하여 다음으로 넘어갈 수 있다. 
profile
프론트엔드 개발자

0개의 댓글