day06

15488 ワード

1.同期と非同期方式


サーバとの通信
2台のコンピュータは要求と応答を通じてデータを交換する.

非同期とは?


サーバコンピュータが作業を完了するのを待たない通信

同期とは?


リクエストを受信して処理し、次のリクエストを処理します.

しかし、なぜ動機の代わりに非動機を使うのだろうか。


リクエスト間で待機時に使用する必要はありません!
デフォルトでは、JavaScriptは同期で実行されます.
外部リクエストのライブラリは非同期です(EX:AXIOS)
非同期を同期に変換するコマンド
async/await
// 비동기방식
function fetchPost(){
    const result =  axios.get('https://koreanjson.com/posts/1')
    console.log(result)// 비동기로 하였을 때 Promise { <pending> }
}
fetchPost(); // 실행명령


// 동기방식
async function fetchPost2(){
    const result = await axios.get('https://koreanjson.com/posts/1')
    console.log(result.data.title)// 동기방식을 사용하여 데이터를 받아올때까지 기다림!
}
fetchPost2(); //실행 명령

2.携帯認証コードSMSの送信


cloud provider


Naverクラウド、NHNクラウド、AWS、GCP、Azureなどのクラウドからクラウドを得ることができます.

ヘッダとbodyをapiに書き込み、サーバを開いて送信します.
export async function sendTokenToSMS(myphone, mytoken) {
    // .env설정
    const appKey = process.env.SMS_APP_KEY
    const XSecretKey = process.env.SMS_X_SECRET_KEY
    const sender = process.env.SMS_SENDER
    const result = await axios.post(`https://api-sms.cloud.toast.com/sms/v3.0/appKeys/${appKey}/sender/sms`,
        {
            //data
            body: `안녕하세요. 인증번호는 ${mytoken}입니다.`,
            sendNo: sender,
            recipientList:[{internationalRecipientNo: myphone}]
        },
        {//config
            headers: {
                "Content-Type": "application/json;charset=UTF-8",
                "X-Secret-Key": XSecretKey
            }
        })
    console.log(result)
    console.log("전송 끝!!!!")


    // console.log(myphone + ' 번호로 인증번호 ' + mytoken + '를 전송합니다!!');
}
認証コードとともに送信されます.

鍵の管理


開発中にセキュリティ保護が必要な鍵が生成されます.
これは.env環境変数を設定することで解決します.
dotnvライブラリを通ります.Env利用可能!
import dotenv from 'dotenv'
dotenv.config()


-----------------------------
//.env 대문자로 작성
//SECRETKEY=1231AFDSA2312
//SECRETNUM=1235123123
最後にKEYをアップロードできないgitignoreの設定
.gitignoreファイルにあります.envの追加

3.サブスクリプション確認テンプレートEMAILの送信


電子メールを送信するためのAPIをファイルに追加します.
app.post('/users', (req, res) => {
    const myuser = req.body.user;

    const isValid = checkValidationEmail(myuser.email)
    if (isValid) {
        const template = getWelcomeTemplate(myuser)

        sendTemplateToEmail(template, myuser.email);
        res.send("가입완료!")
    }
})
同じです.envを設定し、非同期処理を行う関数を記述します.
import axios from 'axios';
import { getToday } from './utills.js'


export async function sendTemplateToEmail(template, email){
    const appKey = process.env.EMAIL_APP_KEY
    const XSecretKey = process.env.EMAIL_X_SECRET_KEY
    const sender =process.env.EMAIL_SENDER
    const result = await axios.post(
        `https://api-mail.cloud.toast.com/email/v2.0/appKeys/${appKey}/sender/mail`
    ,{
        senderAddress:sender,
        title:"가입을 환영합니다!",
        body: template,
        receiverList:[
            {
                receiveMailAddr: email,
                receiveType: "MRT0"
            }
        ]
    },{
        headers: {
            "Content-Type": "application/json;charset=UTF-8",
            "X-Secret-Key": XSecretKey
        }
    })
    console.log(result)
    console.log("전송 완료!!!!")

    // console.log(`${email}이메일로 ${template}를 전송합니다.`);
}
}
その後、バックエンドサーバを開き、フロントエンドでリクエストを送信して応答を確認します.