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);
'TIL with Programmers' 카테고리의 다른 글
[회고록] 3주차 회고록 (0) | 2024.08.30 |
---|---|
[TIL] Node.js 생태계, npm(node pakage manager) (1) | 2024.08.30 |
[TIL] 8/29 모듈, 라이브러리, 프레임워크, npm, Node.js 특징 (4) | 2024.08.28 |
[TIL] 8/28 API(Application Programming Interface), REST API, HTTP 바디 (3) | 2024.08.27 |
[회고록] 2주차 회고록 (0) | 2024.08.23 |