백엔드 6일차

이동현·2023년 3월 20일
0

코드캠프 백엔드

목록 보기
6/29

1. api를 보내는 사전학습

api요청하면서 응답을 기다리는 것
async-await
기다리자 - 동기 (서버 컴퓨터가 작업이 끝날 때까지 기다리는 통신, 서로 관련이 있기 때문에)
기다리지 말자 - 비동기(동시에 관련없는 여러 일 할때 사용)
ex) 인테넷 화면에 연관 없는 여러 그림들을 한번에 불러올때!

  • axios(비동기작동)

등록이 완료되기 전에 불러오면 => 데이터 불러오지 못한다.

2. async / await


axios로 인해 부른 값을 기다려 주지 않아 Promise로 처리 된다.
이를 해결하기 위해
await와 async를 둘다 사용하여 axios.get()의 데이터를 받는 동안 기다리게 동기로 바꿔준다.

var과 선언식은 함수의 중복선언이 가능함
그래서 오류를 발생시키기에
var와 함수의 선언식은 쓰지 않는 것을 추천!!!

  • 화살표 함수에 async, await 적용하기!
const fetchSync = async () => {
  const result = await axios.get("https://koreanjson.com/posts/1");
  //   console.log("동기방식: ", result);
  console.log("동기방식: ", result.data); // 제대로된 결과 => { title: "..." }
};

fetchSync();

// function 앞에 async
// axios 앞에 await 를 쓰는 것이다.

3. coolsms 사용하기

4.환경변수(gitignore)

git에 올라가지 않기 위해 따로 파일을 만들어주고

  • 위에 사진을 보면 .gitignorem 파일안에 적어준 node_modules.env*가 비활성화 된 것을 확인할 수 있다.

1) 환경변수 분리하는 방법

(1) .env파일에서 새로운 변수를 선언하고 본인의 Coolsms API Key, Coolsms API Secret 등의 값을 할당해 줍니다.

//.env
// 예시입니다. 본인의 키값을 넣어 작성하세요.
SMS_KEY=NCSIYWB4QAC1NTSP
SMS_SECRET=IECMDSCNKBKFX4MRQD22PRVITDY3ND7K
SMS_SENDER=01012345678

// 예시입니다. 본인의 키값을 넣어 작성하세요.
EMAIL_PASS=abcdefghijklmnop
EMAIL_SENDER=youremail@gmail.com
EMAIL_USER=youremail@gmail.com

2) .env파일에서 설정한 값들이 Coolsms API Key, Coolsms API Secret 등을 사용하는 함수에 적용될 수 있도록 아래와 같이 코드를 수정해줍니다.

  1. .env파일에서 설정한 값들이 Coolsms API Key, Coolsms API Secret 등을 사용하는 함수에 적용될 수 있도록 아래와 같이 코드를 수정해줍니다.
    // 적용 예시입니다. 본인의 로직에 알맞게 작성해 주세요.
    import coolsms from 'coolsms-node-sdk';

    export async function sendTokenToSMS(myphone, token) {
      const SMS_KEY = process.env.SMS_KEY;
      const SMS_SECRET = process.env.SMS_SECRET;
      const SMS_SENDER = process.env.SMS_SENDER;

      const mysms = coolsms.default;
      const messageService = new mysms(SMS_KEY, SMS_SECRET);
      const result = await messageService.sendOne({
        to: myphone,
        from: SMS_SENDER,
        text: `[코드캠프] 안녕하세요?! 요청하신 인증번호는 [${token}] 입니다.`,
      });
      console.log(result);

      // console.log(myphone + '번호로 인증번호' + token + '를 전송합니다!!!');
    }    
    ```

 ```js
    // 적용 예시입니다. 본인의 로직에 알맞게 작성해 주세요.
    import nodemailer from 'nodemailer';

    export async function sendTemplateToEmail(email, mytemplate) {
      const EMAIL_USER = process.env.EMAIL_USER;
      const EMAIL_PASS = process.env.EMAIL_PASS;
      const EMAIL_SENDER = process.env.EMAIL_SENDER;

      const transporter = nodemailer.createTransport({
        service: "gmail",
        auth: {
          user: EMAIL_USER,
          pass: EMAIL_PASS,
        },
      });
      const result = await transporter.sendMail({
        from: EMAIL_SENDER,
        to: email,
        subject: "[코드캠프] 가입을 축하합니다!!!",
        html: mytemplate,
      });
    }
    ```
  1. 환경변수 파일을 읽어오기 위해 라이브러리 하나를 설치해 주어야 합니다.

    터미널에서 day06backend로 이동하여 아래의 명령어를 입력합니다.

$ yarn add dotenv
  1. day06 → backend→ index.js파일로 이동하여 설치된 dotenv를 import 해오는 코드를 추가합니다.
import express from "express"
import swaggerUi from 'swagger-ui-express';
import swaggerJsdoc from 'swagger-jsdoc'
import {options} from './swagger/config.js'
import cors from 'cors'

import 'dotenv/config' // 추가!!

⇒ 이제 process.env라는 명령어를 사용하여 변수를 선언하게 되면 해당 명령어가 .env의 파일의 키값을 찾아 읽어줄 수 있게 된다.

5. nodemailer

yarn add nodemailer

로 설치

import nodemailer from "nodemailer";
// 3. 이메일에 가입환영 템플릿 전송하기
export async function sendTemplateToEmail(email, myTemplate) {
  const transporter = nodemailer.createTransport({
    service: "gmail",
    auth: {
      user: "ldh715700@gmail.com",
      pass: "tyafwruvwgewrkvc",
    },
  });

  const result = await transporter.sendMail({
    from: "ldh715700@gmail.com",
    to: email,
    subject: "[코드캠프] 가입을 축하합니다!!!",
    html: myTemplate,
  });
  console.log(result);
  // console.log (email + "이메일로 가입환영템플릿 " + myTemplate + "을 전송합니다.")
}

// body부분을 html파일이 없으니 포스트맨을 이용한다.


결과 화면

0개의 댓글