🔎 Web Server
학습을 하고 직접 코드를 작성하는 과정에서 본인이 req.query
와 req.params
의 차이점을 모르고 있다는 것을 인지하고 다시 학습하면서 정리해보고자 한다.
간단하게 각각을 정리해보자면,
req.query
는 query parameter -> 필터링/search?query=c /40th?age=20 /korean?name=fejigu
req.params
는 pass parameter -> 예약된 값/filgth/:uuid /book/:phone
서버의
routing 코드
가 아래와 같다.post.get("/:id/:name", function1);
그리고 데이터를 요청하는 클라이언트 측의
axios
가 아래와 같다.await axios({ method: "get", url: `www.example.com/post/1/jun`, params: { title: 'hello!' }, })
이 경우 전송되는
url
은
‘www.example.com/post/1/jun?title=hello!’ 이다.
그럼 서버에서req.params
와req.query
를 출력하면 결과값은?
✔️req.params
는 예약된 값으로, routing을 보면 id와 name이 예약되어 있다.
즉 서버에서 id라는 변수로 어떤 값이 들어올 것을 알고,
name이라는 변수에 어떤 값이 들어올 것임을 알고 대기하고 있다.
✔️req.params
는 url을 분석하여 id와 name자리에 있는 값을 낚아챈다.
따라서req.params
를 출력해보면 아래와 같다.console.log(req.params); // { id: '1', name: 'jun' }
한편
req.query
를 출력하면 아래와 같다.console.log(req.query); // { title : 'hello!' }
즉, url에서 ?뒤에 입력되는 query문을 req.query로 받아오는 것이다.
axios에서 추가 데이터를 보내는 방법 ->
data
와params
가 있다.
data
-> post 요청을 보낼 때 사용되는 객체
params
-> url에 포함되는 데이터를 넣어주는 것
→ 서버에서는req.params
를 사용하면 예상된 값을 받아오는 의미이지만,
axios에서는 params가 ?뒤에 오는 쿼리문을 뜻한다.