라우팅 (Routing)

현채은·2023년 4월 5일
0
post-thumbnail

들어가기 전에 . .

라우트 vs 라우터 vs 라우팅 차이

  • ✓ 라우트(Route): 경로, 서로 다른 네트워크 간 데이터를 전송하고 전송한 데이터를 받는 경로
  • ✓ 라우터 ( Router ): 인터넷 공유기 ! 라우터는 한개의 인터넷 회신을 여러개의 네트워크가 사용할 수 있도록 쪼개주는 중계역할을 해주는 장치
  • ✓ 라우팅 ( Routing ): 엔드포인트 (URI, 경로)의 정의, 해당 엔드포인트에 대한 클라이언트에 애플리케이션이 응답하는 방식

💡 라우팅 ( Routing )


➡️ URI(또는 경로) 및 특정한 HTTP 요청 메소드 ( GET, POST등 ) 인 특정 엔드포인트에 대한 클라이언트 요청에 애플리케이션이 응답하는 방법을 결정하는 것

  • 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있으며, 이러한 함수는 라우트( 서로 데이터를 주고받는 경로 )가 일치할 때 실행
  • 핸들러 함수?
    • 핸들러 (handle): 다루다
    • 핸들러가 있어야 해당 함수를 활용할 수 있는 것
  • 라우트 정의에는 아래와 같은 구조가 필요
app.METHOD(PATH,HANDLER)
  • app : express의 인스턴스
  • METHOD : HTML 요청 메서드 ( POST,GET.. )
  • PATH : 서버에서의 경로
  • HANDLER : 라우트가 일치할 때 실행되는 함수

Hello Worle 예제


const express = require('express') 
const app = express() // app은 express의 인스턴스
const port = 3000 
//앱은 3000번  포트에서 연결 청취
app.get('/', (req,res) => {
  res.send('Hello World~')
})
//루트 URL(/) 또는 라우트에 대한 요청에 "Hello World"로 응답
app.listen(port, () => { // 서버 시작 
console.log(`Example app listening on port ${port}`)
})
  • 앱 실행 결과
node index.js

💡 메서드와 url에 따라 분기(Routing)하기

  • 메서드와 url(/lower,/upper 등)로 분기점을 만드는 것라우팅 (Routing)이라고 한다.

  • 클라이언트는 특정한 HTTP 요청 메서드 (GET, POST 등)와 함께 서버에 특정 URI로 HTTP 요청을 보냄
    ➡️ 라우팅은 클라이언트의 요청에 해당하는 Endpoint에 따라 서버가 응답하는 방법을 결정 !

✓ 순수 Node.js로 작성하는 경우

const requestHandler = (req,res) => {
  // url이 /lower인 경우
  if(req.url === '/lower') { 
    // url이 /lower이고 method가 GET인 경우
    if(req.method ==='GET') {
      res.end(data)
    // url이 /lower이고 method가 POST인 경우  
    } else if(req.method === 'POST') {
      req.on('data',(req,res) => {
        //do something...
      })
    }
  }
}

✓ Express로 작성하는 경우

  • 프레임워크 자체에 라우터기능 제공
    ➡️ node.js 보다 직관적인 코드 작성 가능
const router = express.Router()
// url이 /lower 이고 method가 GET인 경우
router.get('/lower', (req, res) => {
  res.send(data);
})
//url이 /lower이고 method가 POST인 경우
router.post('/lower', (req,res) => {
  // 응답..
})
        




profile
프론트엔드 개발자

0개의 댓글