프로그래머스 풀스택 데브코스/데브코스 TIL

웹 풀사이클 데브코스 TIL 42일차

jh9788 2024. 1. 16. 17:31

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 => 몽구스, 시퀼라이즈

  • 패키지 구조

    1. Router: 경로(URI, URL)와 HTTP 메소드로 요청에 따른 경로를 찾아주는 역할
    2. Controller: 길 매니저 - 요청을 환영! 직접 일을 하진 않음
    3. Service: 직접 일을 함 ex) 어떤 쿼리를 부를지,
      "비즈니스 로직"
    4. Model: 데이터베이스와 소통 -> query 집합
  • 예외처리(try/catch) 더 해줄 곳 없는지

  • 유효성 검사 추가

  • JWT (심화) : access token 이 만료되면, '로그인 연장?'

    • 로그인 시 access token(30분), refresh token(24시간)
      1) access token: 이번 프로젝트에 만든것(로그인한 사람인지 인증)
      2) refresh token: 로그인 연장하는 용도
  • 랜덤 데이터(외부) 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);
})

후기

프로젝트에서 리팩토링 할 부분을 점검해보고 랜덤 데이터를 생성해주는 모듈에 대해서도 배웠다.

키워드: 프로그래머스 데브코스, 국비지원교육, 코딩부트캠프