Programming/Node.js

[Express] Express.js 란? / 사용법

MOONCO 2021. 4. 27. 14:47

Express.js 란?

Node.js 웹 프레임워크 중의 하나로, 여러가지 기능을 가지고 있다.

( HTTP 요청에 따른 라우팅 기능이 대표적 )

 

HTTP 란?

 

[웹/WEB] HTML에서 서버로 데이터 보내기 ( HTTP 요청이란? )

1. GET방식 "주소?데이터명=데이터" 주소란에 담아서 보냄, 보안에 취약, 즉석으로 보낼때 편함, 데이터 크기 제한 있음 ( URL 끝에 ?과 함께 이름과 값을 보내는 요청 파라미터, 여러개의 데이터를

defineall.tistory.com

 

라우팅이란?

 

[프로그래밍] 라우팅이란?

라우팅이란? 프로그램의 목적지를 설정해주는 것! // ex naver.com 주소로 접속하면, naver.html을 보여준다. daum.net 주소로 접속하면, daum.html을 보여준다.

defineall.tistory.com

 

Express.js 의 특징

javascript로 만들어진 여러가지 기능의 미들웨어를 마음대로 추가할 수 있다.

 

미들웨어란?

사용자의 요청과, 서버의 응답 사이에서 특정한 기능을 수행해주는 앱

사용자 요청 송신 > 미들웨어 > 서버 응답 > 미들웨어 > 사용자 응답 수신

 

express.js 설치

npm i express

 

express 사용해서 서버만들기

// index.js ( babel, 최신 es코드 사용 )

// express 모듈 불러오기
import express from "express";

// express 서버 만들기
const app = express();



//
app.METHOD(PATH, HANDLER)

 

express 에서 라우팅하기

express는 브라우저의 HTTP 요청을 받아

express객체의 get(), post() 등의 메서드를 이용해서 라우팅한다.
// '/home' 주소로 접근시, "Home" 출력하도록 라우팅하기 ( get, post, all )
app.get('/home', (req, res) => {
  res.send("Home");
});

app.post('/home', (req, res) => {
  res.send("Home");
});


// 'Router' 사용해서 다른 파일에서도 라우팅하기
// home.js
import { Router } from "express";

router.get('/', (req, res) => {
  res.send("Home");
});

router.get('/about', (req, res) => {
  res.send("About Home");
});

export default router;


// index.js
import home from "./home";

app.use('/home', home);

 

express 에서 미들웨어 사용하기

// express 서버에 미들웨어 추가하기
app.use((req, res, next) => {
  console.log('Time:', Date.now());
  next();
});


// 라우터에 미들웨어 추가하기
router.use((req, res, next) => {
  console.log("Time", Date.now());
  next();
});


// 경로이동시 미들웨어 사용하기
app.all('/secret', (req, res, next) => {
  console.log("anything")
  next();
});

 

응답 메소드 (res)

메소드 설명
res.download() 파일이 다운로드되도록 프롬프트한다?
res.end() 응답 프로세스를 종료
res.json() JSON 응답을 전송
res.jsonp() JSONP 지원을 통해 JSON 응답을 전송
res.redirect() 요청의 경로를 재지정 ( 페이지 이동 )
res.render() 보기 템플릿 렌더링
res.send() 다양한 유형의 응답 전송
res.sendFIle() 파일을 옥텟 스트림 형태로 전송
res.sendStatus() 응답 상태 코드를 설정 후, 해당 코드를 문자열로 표현해 응답 전송

 

express 서버에서 정적파일(CSS, HTML, JS) 불러오기

// 옵션 지정하기
const options = {
  dotfile: 'ignore',
  etag:false,
  extensions: ['css', 'html', 'js'],
  index: false,
  maxAge: '1d',
  redirect: false,
  setHeaders: (res, path, stat) => {
    res.set('x-timestamp', Date.now());
  }
}

// 옵션 적용해서, './public' 폴더 인식하기
app.use(express.static('public'), options);

 

express 서버에 변수저장하기

app.set(키, 값)
반응형