FrontEnd/Frontend-related basic knowledge
nodeJS - req.params, req.query, req.body에 대하여
NandaNanda
2024. 3. 31. 14:53
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
}