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}를 전송합니다.`);
}
}
その後、バックエンドサーバを開き、フロントエンドでリクエストを送信して応答を確認します.Reference
この問題について(day06), 我々は、より多くの情報をここで見つけました https://velog.io/@antipiebse/TIL06テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol