-
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) }
'Programming > NodeJS' 카테고리의 다른 글
passport-local, passport-local-mongoose 회원가입, 로그인 (0) 2020.03.21 Node.Js에서 AWS S3버킷에 파일 업로드 및 삭제 (0) 2020.03.19 Passport 구글 로그인 인증 (oauth20) - nodeJS (0) 2020.02.26 nodeJS - req.params, req.query, req.body (0) 2020.01.22 nodeJS dotenv - 환경 변수 숨기기 (0) 2020.01.18 -