서버에서 데이터 전달하기
express를 통해서 서버를 구동하는 것까지 배웠다면 response 즉 응답을 통해 데이터를 전달하는 방법에 대해서 이야기해 보려고 합니다.
app.get('/products/1',(요청, 응답)=>{
응답.send('상품이름')
})
데이터를 전송하는걸 우리는 이렇게 배웠는데요. 보통 우리가 데이터를 전송을 할 때 데이터는 하나의 값만 가지는 경우가 많이 없습니다.
예를 들어서 이런 티켓예매 사이트를 운영한다고 가정하면 공연제목, 장소, 기간, 시간, 연령, 가격, 포스터 등등 다양한 정보를 받습니다. 이런 경우에는 어떻게 데이터 정보를 넘겨야 할까요?
app.get('/products/1',(요청, 응답)=>{
응답.send('공연명')
응답.send('공연장소')
응답.send('공연기간')
응답.send('공연시간')
응답.send('관람연령')
응답.send('가격')
})
이렇게 넘기면 될까요? 만약 이렇게 데이터를 넘긴다면 어떻게 받아올까요?
맨 위의 공연명 하나만 받아오는 것을 알 수 있습니다. 즉 데이터를 하나씩 전달할 수 없다는 뜻입니다. 그럼 어떻게 전달을 해야 할까요? 바로 데이터를 모아서 덩어리째 보내야 하는 것입니다. 이때 이 덩어리를 우리는 객체라고 하는데 우리가 사용하는 node.js는 javascript를 베이스로 동작을 하기 때문에 javascript 객체로 전달을 할 수 있게 되는 것입니다.
그렇다면 javascript 객체를 만들어보자
JSON(JavaScript Object Notation)
javascript 객체를 우리는 json파일로 전달할 수 있습니다.
javascript 객체는 어떻게 생겼을까요? 객체는 아래와 같은 구조로 이루어져 있습니다.
let show = {
'공연명' : '뮤지컬 <오페라의 유령>',
'장소' : '계명아트센터',
'공연기간' : '2023.12.22 ~ 2024.02.04',
'공연시간' : '150분(인터미션 20분포함)',
'관람연령' : '초등학생이상 관람가',
'가격' : {
'vip석' : '190,000원',
'R석' : '160,000원',
'S석' : '130,000원',
'A석' : '90,000원',
'B석' : '70,000원'
}
}
이 객체를 응답에 넣어주면 이렇게 데이터를 전송이 가능합니다.
직접적으로 객체를 json 안에 넣을 수도 있지만, 객체를 변수에 담아 json에 담아서 사용할 수도 있습니다.
그리고 우리가 또 생각할 부분이 생기는데요 예시를 든 공연은 하나가 아니죠 보통은 수십수백의 공연이 존재합니다. 그러면 app.get('/products/1', (요청, 응답)=>{}) 이 걸 수십 수백 개를 만들어야 할까요? 아닙니다. 이때 우리가 사용하면 좋은 게 바로 라우터 매개변수입니다. 그렇다면 라우터 매개변수는 어떻게 사용하나요?
라우터 매개변수(요청. params)
라우터 매개변수는 API 경로 설정 시에 :매개변수를 입력하여 사용하는데요.
이때 params자체가 매개변수처럼 사용할 수 있는 게 아니라 여기에 어떤 값이 들어올지 모르지만 매개변수를 전달할 예정이다라고 인식을 하는 것입니다. 그래서 해당 URI에 파라미터 값을 받을 수 있는지 요청을 하는데 그게 바로 요청. params입니다. 이렇게 parameter 값을 이용하면 매번 app.get~~~를 하지 않고 한 번만으로 사용이 가능한 것입니다.
params란?
params는 parameter의 별칭으로 GET이나 POST 요청을 총해 전달되는 매개변수를 말합니다.
http://localhost:8080/products/1이 있다면 params는 1을 담습니다.
'프로그래밍📚 > node' 카테고리의 다른 글
express-generator 알아보기 (0) | 2023.12.08 |
---|---|
req.body, req.query, req.params (0) | 2023.12.07 |
[node] 웹 서버 구동하기 - express (0) | 2023.12.06 |
Node Packaged Manager - NPM (0) | 2023.12.05 |
자바스크립트 플랫폼 node.js (0) | 2023.12.05 |