코드 snake > camel 로 변경하기
error status code 고려하기
코드퀄리티 업그레이드
회원가입 > 실패시 날라가는 err
sql에 에러 없이 빈 값이 날라갈 경우 if 문으로 분기처리한다.
+ 쿼리 코드의 모듈화
데이터베이스 중복 코드 > 모듈화
ex. UserContorller > User 데이터 모듈(Model) - CRUD
*DB 모듈 : mysql > 몽구스, 시퀄라이즈
패키지 구조 분리
- Router : 경로 URI, URL와 HTTP method로 요청에 따른 경로를 찾아주는 역할
- Controller : 요청을 환영! 직접 동작을 하지는 않는다.
- Service : 직접 동작을 한다 > 어떤 쿼리를 부를지, 정한다. = "비즈니스 로직"
- Model : DB와 소통 > Query의 집합
어떤 쿼리를 부를지 서비스가 정하고, 어떤 서비스를 부를지는 컨트롤러가 정한다.
⭐ 예외처리 try - catch
유효성 검사 추가
JWT access Token, refresh Token
- access token : 로그인 인증.. 유효기간 끝나가면
- refresh token : 인증 갱신. 로그인 연장하는 용도
access 토큰이 만료되면, 로그인 연장할것?
로그인 시 access token(30m), refresh token(24h) 두개를 발급시키고
만료시간이 다가올 시, refresh token이 유효한지 검증하고, 로그인 유지시킨다.
외부 샘플 데이터
랜덤데이터 외부 api를 활용해서 isbn 샘플 데이터를 채워본다
nodemon 모듈
app.js 가 아닌, 코드의 변화가 조금 되면 자동으로 실행하는 모듈이 있다!
CORS 에러 세팅
랜덤 데이터 프로젝트 - API 알아보기
개요 : 랜덤데이터를 생성해주는 외부 API 기반으로 "가짜 사용자 정보 생성" API
내용
- 랜덤 데이터 생성 API
- 가짜 사용자 정보를 생성하는 eXPRESS 웹/앱 API
faker , mockaroo
faker - person api
mockaroo 사용자 정보
npm 에서 제공하는 `faker-js` 를 사용할 것!
faker로 프로젝트 구성하기
`--save-dev` 운영할때는 사용안하고, 개발할때만 사용할 것이다라는 옵션
`npm install --save-dev @faker-js/faker`
const { faker } = require("@faker-js/faker");
console.log(faker.internet.userName());
console.log(faker.internet.email());
console.log(faker.internet.password());
faker 모듈의 범주 internet 에서 사용하려는 데이터 userName
요구사항
- http://localhost:5555/fake/users
- 한명의 사용자 정보 생성
- email, password, fullName, contact
`fromRegExp` 정규표현식으로 전화번호 표시하기
express 에서 직접 faker 사용하기
const express = require("express");
const app = express();
const { faker } = require("@faker-js/faker");
app.get("/fake/users", (req, res) => {
res.status(200).json({
email : faker.internet.email(),
password : faker.internet.password(),
fullName : faker.person.fullName(),
contact : faker.phone.number()
})
});
app.listen(5555);
req로 숫자를 받아서 그 수만큼 사용자 정보를 생성해주는 api
데이터를 생성하는 방법인가?
app.get("/fake/users/", (req, res) => {
const {num} = req.query;
let users = [];
for (let i = 1; i <= num; i++) {
users.push({
email: faker.internet.email(),
password: faker.internet.password(),
fullName: faker.person.fullName(),
contact: faker.phone.number(),
});
}
res.status(200).json(users);
});
☑️ 배운 점
faker 모듈 > npm 에서도 제공하고, isbn 등 다양한 더미 데이터를 생성해주는 모듈
테스트 플젝에 활용하기 좋은것 같다!