[Express] 라우팅

슈가베어·2023년 6월 22일

Express

목록 보기
2/3

라우팅

클라이언트는 서버에 URI 및 특정한 HTTP 요청 메소드로 요청을 전달한다
이러한 클라이언트 요청에 응답하는 방법을 결정하는것을 라우팅이라 한다
각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트가 일치할 때 실행된다

라우트의 구조

라우팅 메서드

Express는 HTTP 메소드에 해당하는 다음과 같은 라우팅 메소드를 지원한다

주요 메서드

  • get: URI 형식으로 웹 서버측 리소스(데이터)를 요청
  • post: 클라이언트에서 서버로 전달하고자하는 정보를 서버로 보냄
  • put: POST처럼 정보를 서버로 제출하는 것이나 보통 갱신 위주
  • delete: 웹 리소스를 제거할 때 사용

라우트 핸들러

클라이언트 요청에 따라 라우트가 일치할 경우 실행되는 콜백 함수

라우트 핸들러의 매개변수

  • req: Request로 클라이언트의 요청 정보를 담고 있음
  • res: Response로 클라이언트에게 응답하기 위한 정보를 담고 있음
  • next: 다음 미들웨어 함수를 가리키는 Object

응답 메서드

서버에서 응답하지 않은 경우에 클라이언트는 응답을 받기 못하고 정지된 상태를 유지함으로 다음 메서드 중 한 가지 방법으로 응답해야 한다

res.download() : 다운로드될 파일을 전송한다
res.end() : 응답 프로세스를 종료한다
res.json() : JSON 응답을 전송한다
res.jsonp() : JSONP 지원을 통해 JSON 응답을 전송한다
res.redirect() : 요청 경로를 재지정한다
res.render() : view template을 렌더링한다
res.send() : 다양한 유형의 응답을 전송한다
res.sendFile() : 파일을 옥텟 스트림(이메일이나 http에서 사용되는 content-type에서 application의 형식이 지정되어 있지 않은 경우에 octet-stream이라고 한다)의 형태로 전송한다
res.sendStatus() : 응답 상태 코드(response status code)를 설정한 후 해당 코드를 문자열로 표현한 내용을 응답 본문으로서 전송한다

Router 모듈 만들기

const express = require('express');
const router =express.Router();

router.get('/', (req,res,next) =>{
  res.send('respond with a resource');
});

module.exports = router;  //만든 라우터 모듈을 내보낸다 

Router 사용

작성된 라우터 모듈은 app에 use함수로 연경하여 사용한다.

const userRouter=require('./routes/users');
const app = express();

app.use('/users', userRouter);

Request Handler

라우팅에 적용되는 함수를 리퀘스트 핸들러라고 한다.
HTTP 요청과 응답을 다룰 수 있는 함수로 설정된 라우팅 경로에 해당하는 요청이 들어오면 리퀘스트 핸들러함수가 실행된다.

Request객체
HTTP요청 정보를 가진 객체로 요청의 path parameter, queryparameter, body, header등을 확인 가능

Request객체의 주요값 및 함수

profile
Just do it!

0개의 댓글