본문 바로가기

FrontEnd/Frontend-related basic knowledge

nodeJS - req.params, req.query, req.body에 대하여

 

1. Request  Properties

1-1. req.params

예를 들어 /user/:name 경로가 있으면 "name"속성을 req.params.name으로 사용할 수 있다.

 

https://params/user/12341234 일 경우 12341234를 받는다. 

 

req.param은 더이상 사용하지 않음

1-2. req.query

이 속성은 경로의 각 쿼리 문자열 매개 변수에 대한 속성이 포함 된 개체다.

 

예를 들어 https://query/search?searchWord=구글검색 이면

searchWord 매개변수(parameter)의 구글검색 이라는 값(argument)을 가져온다.


1-3. req.body

JSON 등의 데이터를 담을때 사용한다. (주로 POST로 유저의 정보 또는 파일 업로드를 보냈을 때 )

 

요청 본문에 제출 된 키-값 데이터 쌍을 포함한다. 기본적으로 이는 정의되어 있지 않으며 express.json(), express.urlencoded()와 같은 미들웨어를 사용해야한다.

 

위의 말은 쉽게 설명하자면 req.body는 body-parser를 사용하기 전에는 default 값으로 Undefined 설정되기 때문에 body-parser를 사용하여 해결해야 오류를 뿜지 않는다.

 

// 예제코드 - app.js 부분

//미들웨어
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extends: true }))  
		↓
        	↓ // Express 4.16.0버전 부터 body-parser의 일부 기능이 익스프레스에 내장
        	↓ // 아래와 같이 사용 가능하다
app.use(express.json())
app.use(express.urlencoded({ extends: true}))

parser가 필요한 경우도 존재

  • body-parser로 Raw, Text형식의 본문을 추가로 해석할 수 있음

 


 

form 에서는 name: value, email: value, password: value의 값을 body에 담아 POST request를 보냄

// 예제 join.pug 부분

form(action=routes.join, method="post")
      input(type="text", name="name", required=true)
      input(type="email", name="email", required=true)
      input(type="password", name="password", required=true)
      input(type="submit", value="Join")

 

form 에서 post method로 보낸 것을 req.body property(속성)으로 name, email, password를 받을 수 있다.

// 예제 코드 js

export const postJoin = (req, res) => {
  const {
    body: { name, email, password}
  } = req
}