본문 바로가기

Web Dev/Javascript

Javascripte웹 백엔드 학습 No.1 : Token 만드는 코드 -> Farcade Pattern

반응형

PAD

padStart와 padEnd 함수는 ES8(ES2017)에 새롭게 추가된 기능이다. pad는 좌우에 특정한 문자열로 채우는 기능이다. 좀더 자세히 얘기하면 첫번째 파라미터인 maxLength를 받아 문자열의 길이가 maxLength보다 작을 경우 나머지를 특정한 문자열로 채워주는 기능이다. 이때 두번째 문자열을 넘겨주지 않으면 빈 공백으로 문자열을 채운다.

const result = String(Math.floor(Math.random() * 1000000)).padStart(6, "0");

console.log('result', result)​

Token

console.log("안녕하세요 !")

function getToken(num) {
    const result = String(Math.floor(Math.random() * 10 ** num)).padStart(num, "0");
    console.log('result', result)
}

getToken(10)

1.Math

i. Floor -> 소수점 컷

ii.Pad -> 빈자리 대체 

Token-조건

console.log("안녕하세요 token-count !")

function getToken(num) {
    if (num <= 0 || num === undefined || num === null) {
        console.log('에러 발생 !! 갯수 제대로 입력 요망 ')
        return;
    }
    if (num >= 10) {
        console.log("에러 발생 !! 갯수가 너무 많다.")
        return;
    }

    const result = String(Math.floor(Math.random() * 10 ** num)).padStart(num, "0");
    console.log('result', result)
}

getToken(3)

Token-API

<1 단계>

console.log("안녕하세요 token-count !")

function createTokenOfPhone(PhoneNum) {
    //1. 휴대폰번호 자릿수 맞는지 확인하기 

    if (PhoneNum.length !== 10 && PhoneNum.length !== 11) {
        console.log("<에러발생!> 휴대폰번호를 다시 한번 확인해주세요")
        return
    }

    //2. 핸드폰 토큰 6자리 만들기 
    const num = 6;

    if (num <= 0 || num === undefined || num === null) {
        console.log('<에러발생!>갯수 제대로 입력 요망 ')
        return;
    }
    if (num >= 10) {
        console.log("<에러발생!> 갯수가 너무 많다.")
        return;
    }

    const result = String(Math.floor(Math.random() * 10 ** num)).padStart(num, "0");



    //3. 핸드폰번호에 토큰 전송하기 ! 
    console.log(PhoneNum + " 번호로 인증번호 " + result + "를 전송합니다 !! ");
}

createTokenOfPhone("01096596509")

<2단계>: 리팩토링 -> 퍼사드패턴

 

console.log("안녕하세요 token-count-api-facade !")


function checkValidatePhoneNum(PhoneNum) {
    if (PhoneNum.length !== 10 && PhoneNum.length !== 11) {
        console.log("<에러발생!> 휴대폰번호를 다시 한번 확인해주세요")
        return false;
    }
    else {
        return true;
    }

}
function createToken(count) {

    if (count <= 0 || count === undefined || count === null) {
        console.log('<에러발생!>갯수 제대로 입력 요망 ')
        return;
    }
    if (count > 10) {
        console.log("<에러발생!> 갯수가 너무 많다.")
        return;
    }

    const result = String(Math.floor(Math.random() * 10 ** count)).padStart(count, "0");
    return result;

}
function sendTokenToSMS(PhoneNum, token) {

    console.log(PhoneNum + " 번호로 인증번호 " + token + "를 전송합니다 !! ");
}

function createTokenOfPhone(PhoneNum, count) {
    //1. 휴대폰번호 자릿수 맞는지 확인하기 
    const isValid = checkValidatePhoneNum(PhoneNum);
    //2. 핸드폰 토큰 6자리 만들기 
    if (isValid) {
        const token = createToken(count);
        if (token === undefined) {
            return;
        }
        else { sendTokenToSMS(PhoneNum, token); }

    }
    //3. 핸드폰번호에 토큰 전송하기 ! 

}

createTokenOfPhone("01096596509", 6)

tip -> import export 문법 사용시

npm init 

{
  "name": "01-05-token-count-api-facade-import",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "type": "module"
}

"type" : "module"

반응형