안녕하세요. 혀코입니다.
오늘은 Node.js에서 query 값을 받아서 핸들링하는 방법에 대해서 알아보겠습니다.
$ mkdir query-string
$ cd query-string
$ touch app.js
$ npm init
$ npm install express
query-string 폴더를 만들고, query-string 폴더 안으로 이동해서 app.js 파일을 만들고, npm 초기화해서 package.json파일을 만듭니다. 그리고 서버를 사용하기 위해 express 를 설치합니다.
app.js 파일을 다음과 같이 작성합니다.
const express = require('express')
const app = express()
app.get('', (req, res) => {
res.send('Hello World')
})
app.get('/product', (req, res) => {
res.send({
products: []
})
})
app.listen(3000, () => {
console.log('Server is up on port 3000')
})
이렇게 하고 node app.js 를 실행하고 http://localhost:3000/product 를 확인하면, 다음과 같에 JSON 형태가 나타납니다.
{
product: []
}
여기서 URL로 Query 값을 넘겨주는 방법에 다음과 같습니다.
http://localhost:3000/product?search=games
search 에다가 games를 저장해서 Url로 request를 넘겼습니다.
이것을 핸들링하는 방법은 다음과 같이 app.js를 업데이트 하면 됩니다.
const express = require('express')
const app = express()
app.get('', (req, res) => {
res.send('Hello World')
})
app.get('/product', (req, res) => {
if(!req.query.search) {
return res.send({
error: 'you must provide a search term'
})
}
console.log(req.query.search)
res.send({
products: []
})
})
app.listen(3000, () => {
console.log('Server is up on port 3000')
})
res로 res.send와 res.render만 사용하다가 이제 req.query를 사용하네요.
query를 사용하는 부분은 request에 해당해서, url로 넘긴 search term을 핸들링하려면, req.qeury.search로 사용할 수 있습니다.
윗 코드에서 search term 이 비어 있다면, 에러 JSON을 출력되도록 설정되어 있으며, return으로 if 문이 시작되기 때문에 search term 이 없다면 console.log를 찍지 않습니다. 만약 search term 이 존재한다면, console.log를 찍고 product 비어있는 JSON이 출력됩니다.
이 방법을 활용한다면, input으로 사용자의 search term을 url로 보내고 req.query.search로 키값을 받아서 해당 search term에 대한 값을 표시할 수 있습니다.
이렇게 Node.js에서 query 값을 받아서 핸들링 하는 방법을 알아봤습니다.
유용하셨다면, 공감과 구독 부탁 드립니다.
감사합니다.
댓글