1. JSON Server
가짜 REST API를 생성하는 데 사용되는 도구로 이를 통해 간단한 JSON 파일을 사용하여 가상의 백엔드 서버를 구현할 수 있다.
설치
최신 버전에서 지원하지 않는 기능이 있어 아래의 버전으로 설치했다.
npm install json-server@^0.17.3
2. LowDB
Node.js 기반의 간단한 JSON 데이터베이스로, JSON 파일에 데이터를 저장하고 쿼리를 수행할 수 있다. 즉, 파일 기반의 데이터베이스를 생성하고 관리하는 도구이다.
설치
버전 1를 제외하고 모두 ESM 모듈 시스템을 사용하고 있어 CommonJS 모듈 시스템에서 사용할 수 있는 버전 1을 설치했다. (추후 sqlite로 마이그레이션 할 예정이다.)
npm install lowdb@1
3. 가상의 백엔드 서버 구현
db.json
파일 형식의 데이터베이스이다.
{
"users": [
{
"email": "test@test.com",
"password": "$2a$10$2EjOp9X0H3PGdQM.EtuUIePH0iTEBZobPucO6cO02mRq1rqEEkIfa",
"username": "test",
"id": 1
}
]
}
구현
JSON Server와 LowDB를 함께 사용하면 간편하게 실제 벡엔드 서버 및 실제 데이터베이스 환경과 유사한 가상의 백엔드 서버를 구현할 수 있다.
// server.js
// 서버
const jsonServer = require('json-server');
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middlewares = jsonServer.defaults();
// 데이터베이스
const low = require('lowdb');
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('db.json');
const db = low(adapter);
server.use(middlewares); // 미들웨어
// 여기에 커스텀 라우터 구현하면 됨
server.use(router); // JSON Server에서 지원하는 기본 라우터
server.listen(3001, () => {
console.log('JSON Server is running');
});
실행
express를 사용해 서버를 구현할 때와 형태가 굉장히 비슷하다.
node server.js
4. JSON Server Auth
JSON Server와 함께 사용되는 인증 기능을 제공하는 라이브러리이다. JSON Server는 인증 기능이 없기 때문에, 간단한 사용자 인증이나 권한 부여가 필요한 경우 해당 라이브러리를 사용하면 된다. 일반적으로 JSON Web Token(JWT)을 사용하여 사용자를 인증하고 권한을 관리한다.
설치
npm install json-server-auth
적용
const jsonServer = require('json-server');
const auth = require('json-server-auth');
const low = require('lowdb');
// 서버
const server = jsonServer.create();
const router = jsonServer.router('db.json');
const middlewares = jsonServer.defaults();
// 데이터베이스
const FileSync = require('lowdb/adapters/FileSync');
const adapter = new FileSync('db.json');
const db = low(adapter);
// Bind the router db to the app
server.db = router.db;
server.use(middlewares);
server.use(auth);
server.use(router);
server.listen(3001, () => {
console.log('JSON Server is running');
});
이렇게만 적용하면 로그인, 회원가입을 수행할 수 있다.
- 로그인 및 회원가입은 db.json의 users를 통해 진행한다.
- 회원가입시 토큰이 유저정보와 같이 저장되고 로그인시 해당 토큰을 클라이언트로 전송한다.
- 회원가입시 원하는 필드(이메일, 패스워드, 이름, 주소 등)를 모두 저장할 수 있다. 그러나 토큰에는 이메일, id 값만 있는듯 하다.
- id값은 자동으로 증가되어서 신경쓸 필요가 없다.
'개발' 카테고리의 다른 글
Storybook 알아보기 (0) | 2024.06.11 |
---|---|
핵심 웹 지표(Core Web Vitals) 정리 (0) | 2024.05.28 |