camel vs snake
http response 에서는 카멜 케이스 방식을 사용하는 것이 좋다. 하지만 데이터베이스에서는 스네이크 케이스를 사용하는데 응답을 전송하기 전에 이를 바꿔주어야 한다.
conn.query(sql, values, (err, results) => {
if(err) {
console.log(err);
// return res.status(StatusCodes.INTERNAL_SERVER_ERROR);
}
if(results.length){
results.map((result) => {
result.pubDate = result.pub_date;
delete result.pub_date;
});
allBooksRes.books = results;
}
else
return res.status(StatusCodes.NOT_FOUND).end();
});
바꿔주는 예시이다. map을 통해 새로운 키갑에 기존 값을 넣고 기존값을 delete한다.
프로젝트 리팩토링
데이터베이스 중복 코드 -> 모듈화
ex. UserController => User (데이터 모듈 = Model) - CRUD
cf. DB ORM: mysql => 몽구스, 시퀼라이즈패키지 구조
- Router: 경로(URI, URL)와 HTTP 메소드로 요청에 따른 경로를 찾아주는 역할
- Controller: 길 매니저 - 요청을 환영! 직접 일을 하진 않음
- Service: 직접 일을 함 ex) 어떤 쿼리를 부를지,
"비즈니스 로직" - Model: 데이터베이스와 소통 -> query 집합
예외처리(try/catch) 더 해줄 곳 없는지
유효성 검사 추가
JWT (심화) : access token 이 만료되면, '로그인 연장?'
- 로그인 시 access token(30분), refresh token(24시간)
1) access token: 이번 프로젝트에 만든것(로그인한 사람인지 인증)
2) refresh token: 로그인 연장하는 용도
- 로그인 시 access token(30분), refresh token(24시간)
랜덤 데이터(외부) api 를 활용해서 isbn 샘플 데이터를 채워볼 수도 있음
nodemon 모듈: node 자동 실행
랜덤 데이터 프로젝트
개요
랜덤 데이터를 생성해주는 외부 api를 기반으로 "가짜 사용자 정보 생성" api내용
1) 랜덤 데이터 생성 api (가짜 사용자, 상품)
2) 가짜 사용자 정보를 생성하는 Express 웹/앱 API
랜덤 데이터 생성 API
- faker
- mockaroo
Faker
Faker는 npm으로 모듈화해서 기능을 지원한다.
https://www.npmjs.com/package/@faker-js/faker
const { faker } = require('@faker-js/faker');
console.log(faker.internet.userName());
console.log(faker.internet.email());
console.log(faker.internet.password())
npm으로 설치를 한 후 몇가지 값을 찍어보았다.
internet은 범주이고 끝에는 사용하고자 하는 함수이다.
가짜 사용자를 만들어주는 api
app.get('/fake/users', (req,res) => {
let user ={};
user.email = faker.internet.email();
user.password = faker.internet.password();
user.fullName = faker.person.fullName();
user.contact = faker.phone.number();
res.status(201).json(user);
})
가짜 사용자를 원하는 수 만큼 만들어주는 api
app.get('/fake/users', (req,res) => {
let {num} = req.query;
num = parseInt(num);
let users = [];
for(let i =0; i<num; i++){
let user ={};
user.email = faker.internet.email();
user.password = faker.internet.password();
user.fullName = faker.person.fullName();
user.contact = faker.phone.number();
users.push(user);
}
res.status(201).json(users);
})
후기
프로젝트에서 리팩토링 할 부분을 점검해보고 랜덤 데이터를 생성해주는 모듈에 대해서도 배웠다.
키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프
'프로그래머스 풀스택 데브코스 > 데브코스 TIL' 카테고리의 다른 글
웹 풀사이클 데브코스 TIL 44일차 (0) | 2024.01.23 |
---|---|
웹 풀사이클 데브코스 TIL 43일차 (0) | 2024.01.23 |
웹 풀사이클 데브코스 TIL 41일차 (0) | 2024.01.15 |
웹 풀사이클 데브코스 TIL 40일차 (0) | 2024.01.12 |
웹 풀사이클 데브코스 TIL 39일차 (0) | 2024.01.11 |