본문 바로가기
TIL with Programmers

[TIL] 8/30 express 사용하기, json 객체, params

by 보먀 2024. 8. 29.
728x90
반응형

1. express

 

express 는 외부 모듈이기 때문에 설치가 필요하다.

npm install express (또는 npm i express)

 

 

1.1. http 코드 vs express 코드

// express 코드

const express = require('express'); // 외부 모듈 express 가져옴
const app = express(); // 서버 담음

app.get('/', function(req, res) {
    res.send('Hello World'); 
})

app.listen(8888); // 포트번호 3000 으로 설정
// http 코드

let http = require('http'); // http는 별도의 설치가 필요없는 내장 모듈

function onRequest(request, response) {
    response.writeHead(200, {'Content-Type' : 'text/html'});
    response.write('Hello Node.js');
    response.end();
}

http.createServer(onRequest).listen(8888); // 서버 만들고 포트번호 지정

 

 

예시)

 

GET 메서드로, url 이 날아오면, 매개변수로 전달받은 콜백 함수를 호출하도록 서버에 셋팅 

// GET + "/"
// "Hello World"
app.get('/', function(req, res) {
    res.send('Hello World'); 
});

// API: GET + "http://localhos:1234/test"
// "TEST SUCCESS"
app.get("/test", function(req, res) {
    res.send('TEST SUCCESS');
});

// API: GET + "http://localhos:1234/test/1"
// "ONE!"
app.get('/test/1', function(req, res) {
    res.send('One!');
});

 

 

1.2. 데이터 모아서 객체로 던지기 & json

 

여러 상품 중 product id 가 1번인 상품의 상세페이지를 조회한다고 생각해보자. 

상품의 상세 페이지에는 여러 정보들이 있기 때문에, 제목과 가격을 나타내 주기 위해 아래와 같이 res.send() 를 두 번 사용해 코드를 짰다.

하지만, 서버를 띄우니 "Node.js 를 배워보자" 라는 책 제목만 들어가 있다. 

 

- 어떻게 해야할까? 데이터를 각각 보내지말고, 데이터를 객체 형태로 한 번에 보내자!

- 어떤 언어의 객체로 보내야하지? 프론트는 어차피 자바스크립트를 사용하기 때문에 자바스크립트 객체를 던지면 된다

const express = require('express'); // 외부 모듈 express 가져옴
const app = express(); // 서버 담음

app.get('/products/1', function(req, res) {
    res.send('Node.js를 배워보자');
    res.send(20000);
})

// 서버 셋팅: 포트 넘버를 1234 로 셋팅
app.listen(1234);

 

 

객체란?

-> 세상은 객체로 이루어져 있음 (현실에 존재하는 무언가, 다)

-> 주어 자리에 왔을 때 문장이 만들어지면 그건 다 객체

 

ex)

- 상품명: Node.js를 공부해 보자

- 상품가격: 20000

- 상품소개: 이 책 친절함

=> 결국 이건 "Node.js를 공부해보자"라는 책(객체)이 가지는 데이터 덩어리

 

 

json

  • javascript object notaion
  • 자바스크립트 객체가 어떻게 생겼나, 어떤 형태인가
// 자바스크립트 객체

let book = {
    title: 'Node.js를 공부해보자',
    price: 20000,
    description: '이 책 친절함'
}

 

 

express 로 json 형태 보내기

app.get('/hello', function(req, res) {
    res.send({
        say: '안녕하세요'
    })
});

 

 

command 키를 누르고 send 를 눌러 들어가보면 json 이라는 함수가 따로 정의되어 있는 것을 확인할 수 있다. 

물론 send 로도 문제 없이 보낼 수 있지만 json 함수를 사용하면 send 보다 살짝 더 빠르고 명확하게 사용할 수 있다고 하니 json 함수 사용을 추천한다.  

app.get('/hello', function(req, res) {
    res.json({
        say: '안녕하세요'
    })
});

 

 

근데 사실 json 과 자바스크립트 객체는 형태가 똑같다. 그래서 자바스크립트로 객체를 만들고 그 객체를 보낼 수 도 있다.

// 자바스크립트 객체
let nodejsBook = {
    title: 'Node.js를 공부해보자',
    price: 20000,
    description: '이 책 친절함'
}

app.get('/products/1', function(req, res) {
    res.json(nodejsBook); // 객체 넣어줌
})

 

 

 

1.3. 동적 URL 처리

 

근데 만약에 상세 조회할 상품이 1000개 정도 되면 어떻게 처리해야할까? 

1000 개의 상품을 모두 /products/1, products/2, products/3 .. 이런 식으로 처리할 수는 없다. 

이렇게 동적인 URL 처리는 params 를 사용하면 된다. 

const express = require('express'); // 외부 모듈 express 가져옴
const app = express(); // 서버 담음

// products/__ 빈칸에 오는 값을 n 이라는 변수에 담아줘
// : => 나한테 URL로 매개변수를 전달
// req.params 너 파라미터 내가 떼서 볼게
app.get('/products/:n', function(req, res) {
    res.json({
        num: req.params.n // URL로 들어온 파라미터 값을 사용
    })
});

// 서버 셋팅: 포트 넘버를 1234 로 셋팅
app.listen(1234);
728x90
반응형