_ 사용하지 않고 - 사용한다/ 포함하지 않는다GET : 조회
POST : 생성
PUT : 전체 수정
PATCH : 수정
DELETE : 삭제
" Node.js를 위한 빠르고 개방적인 웹 프레임워크 "
서버 사이드 프레임워크로 Node.js api를 단순화하고 유용한 기능들을 추가하여 서버 구축에 도움을 주는 역할을 한다
NPM 에 접속하여 express package 확인 후 다음 명령어를 입력하면 설치가 가능하다
// 설치 명령어
npm i express
// 기본 사용 방법
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
JSON (JavaScript Object Notation)은 자바스크립트 객체 문법으로 구조화된 데이터를 표현하기 위한 문자 기반 표준 포맷이다
일반적으로 서버에서 클라이언트로 데이터를 보낼 때 사용한다
클라이언트가 사용하는 언어와 관계없이 통일된 데이터를 주고 받을 수 있도록 일정한 패턴을 제공한다
결과적으로 클라이언트가 데이터를 자기 방식으로 저장 표기할 수 있도록 한다
위의 JSON 포맷으로 아래 데이터를 표기하고 위의 REST 규칙을 잘 준수한 API를 express.js로 구현 해보자

// express 모듈 불러오기
const express = require('express');
const app = express();
const port = 1234; // 포트넘버 1234로 설정
app.listen(port);
// js 맵 객체 생성
let db = new Map();
// item 1~5 객체 각각 생성
let item1 = {
itemNum : 1,
Name : 'Computer',
price : 1000000
};
let item2 = {
itemNum : 2,
name : 'Book',
price : 10000
};
let item3 = {
itemNum : 3,
name : 'Cup',
price : 3000
};
let item4 = {
itemNum : 4,
name : 'Chair',
price : 200000
};
let item5 = {
itemNum : 5,
name : 'Table',
price : 500000
};
// 객체 db 에 삽입
db.set(1,item1);
db.set(2,item2);
db.set(3,item3);
db.set(4,item4);
db.set(5,item5);
// 개별 아이템 정보 조회 기능 구현
app.get('/items/:id', (req,res) => {
let {id} = req.params;
id = parseInt(id);
// 해당하는 id가 없는 경우 error 메세지 출력
if(db.get(id)==undefined){
res.json({
message : '해당 아이템이 존재하지 않습니다'
});
} else {
// id에 해당하는 정보 출력
res.json(db.get(id));
};
});


// 전체 아이템 정보 조회 기능 구현
app.get('/items', (req,res) => {
// db가 비어있다면 아이템 미출력
if(db.size==0){
res.json({
message : '아이템이 존재하지 않습니다'
});
}
// db에 아이템이 존재한다면 아이템 출력
else {
let items={};
db.forEach(function(value,key) {
items[key]=value;
})
res.json(items);
}
});


다음 에러 코드는 포트넘버 1234 서버를 이미 다른 프로세서에서 사용 중일 때 출력된다
따라서 1234 포트 넘버를 사용 중인 프로세서를 종료해주어야 사용이 가능하다
// 포트넘버 1234 사용 중인 프로세서 확인
netstat -ano | findstr 1234
// 확인 후 종료
taskkill/pid 32600 /f

다음과 같이 실행한 후 재시도하면 오류 코드가 해결된다
// 아이템 정보를 가저오는 라우트
app.get('/items/:id', (req,res) => {
const {id} = req.params;
id = parseInt(id);
if(db.get(id)==undefined){
res.json({
// 해당하는 id가 없는 경우 error 메세지 출력
message : 'error'
})
} else {
// id에 해당하는 정보 출력
res.json(db.get(id));
};
});
처음 이렇게 코드를 작성했다가 다음 오류 코드가 출력되었다
확인해보니 const {id} = req.params; 이 코드에서 오류가 발생했다
이유는 const로 변수를 선언하면 값이 재할당이 되지 않기 때문이다. 즉 const로 변수를 선언한다는 것은 그 변수를 상수로 설정한다는 뜻이다
위 코드에서 'id' 는 요청의 파라미터 값이고 값은 변할 수 있다
예를 들면 /items/1 을 요청했다가 다시 /items/2 를 요청할 수도 있다
따라서 const가 아닌 let으로 변수를 선언해주어야 오류 해결이 가능하다
// 설치 명령어
$ npm install -g express-generator
$ express
post patch delete Method 추가 학습