본문 바로가기
Programming/Node.js

Node.js에서 query 값을 받아서 핸들링하는 방법

by 혀코 2020. 1. 18.

안녕하세요. 혀코입니다.

오늘은 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 값을 받아서 핸들링 하는 방법을 알아봤습니다.

유용하셨다면, 공감과 구독 부탁 드립니다.

감사합니다.

댓글