ABOUT ME

chanho Yoon
chyoon0512@gmail.com


깃허브


블로그 이사!

이 블로그로 이사했어요!!


Today
-
Yesterday
-
Total
-
  • Node.js Express 라우팅, 라우트 메소드 (GET,POST 요청 처리하기)
    Programming/NodeJS 2020. 2. 27. 15:03
    반응형

    라우팅

    • URI(경로) 및 특정한 HTTP(Hyper Text Transfet Protocol) 요청 메소드(GET,POST)의 클라이언트 요청에 응답하는 방법을 결정

    • 각 라우트는 하나 이상의 핸들러 함수를 가질 수 있고, 라우트가 일치할 때 실행된다.


    라우트 구조

    GET, POST 방식의 method

    app.get( PATH(경로), HANDLER )
    app.post( PATH(경로), HANDLER )
    • 여기서 app은 express 객체

    • METHOD에는 HTTP 요청 메소드로 GET, POST 방식이 있다

    • PATH는 해당하는 프로젝트 내의 서버 경로

    • HANDLER는 라우트가 일치할 때 발생하는 함수이다.


    라우트의 사용

    //GET 방식의 METHOD
    app.get('/', function (req, res) {
    	res.send("hello getMethod")
    })
    
    //POST 방식의 MEHTOD
    app.post('/', function (req, res) {
    	res.send("Hello postMethod")
    })

    ||

    const getMethod ( req, res ) {
    	res.send("hi getMethod!")
    }
    
    app.get('/', getMethod)

     

    express.Router()

    • express.Router 클래스를 사용하면 모듈식 마운팅 가능한 핸들러 작성 가능
    • Router 인스턴스는 완전한 미들웨어이자 라우팅 시스템이다
    //test.js
    
    import express from 'express'         
    
    const testRouter = expres.Router() // testRouter 인스턴스 생성
    
    //default index route
    testRouter.get('/', function(req,res) {
    	res.send('Hi!! Home!!')
    })
    
    //main route
    testRouter.get('/main', function(req,res) {
    	res.send('Hi!! Main!!')
    })
    //end route
    testRouter.get('/end', function(req,res) {
    	res.send('Hi!! end!!')
    })
    
    export default teestRouter

    이후에 app.js 에서 라우터 모듈을 import 한다

    //app.js
    
    const test from './test'
    ...
    ...
    app.use('/test', test)

    app은 /test , /test/main, /test/end에 대한 요청을 처리할 수 있다. 이후에 계속해서 추가 가능

     

    또한 이런식으로 모듈화 화면 유지,관리하기 편해진다.


    POST method를 사용할 때 주의할 점

    • get 같은 경우 URL에 parameter를 함께 보내 요청하지만, post는 request body에 parameter를 보내서 정보를 추출해야 한다.
    • 이럴때 body-parser 미들웨어를 사용하면 간단하게 추출 가능하다.
      • 미들웨어란 클라이언트에서 req(요청),res(응답) 사이 중간(미들)에 위치하는 함수로, 요청과 응답 사이클에서 중간에 거쳐가는 함수들이라고 생각하면된다.

     

    body-parser란?

    • body-parser는 node.js 모듈로 클라이언트의 post request body로부터 파라미터를 추출할 수 있게 해주는 것
    npm install body-parser
    import express from 'express'         
    import bodyParser from 'body-parser'  //body-parser 모듈 포함
    
    const app = express()
    
    //미들웨어
    app.use(bodyParser().json())
    app.use(bodyParser.urlencoded({ extends: true }))
    
    app.post('/', HANDLER) 

     

    • POST 값 받는 간단한 예제
    const postData = (req, res) => {
    	const {
        	body: { post로 전달한 name , ex) name, email, password }
        } = req
        console.log(name,email,password)
    }
    
    //위와 같은 결과를 가져오긴하나 비효율적 위의 방법은 한 번에 저렇게 받아오면 변수로 바로 사용가능
    //아래는 일일이 변수에 할당해줘야함
    const postDate = (req, res) => {
        const name = req.body.name
        const email = req.body.email
        const password = req.body.password
        console.log(name,email,password)
    }

     

    댓글

Designed by Tistory.