투케이2K

209. (NodeJs) [Mac Os] [문법] : async 및 await 사용해 동기식 로직 처리 수행 - Sync Logic 본문

NodeJs

209. (NodeJs) [Mac Os] [문법] : async 및 await 사용해 동기식 로직 처리 수행 - Sync Logic

투케이2K 2024. 2. 29. 22:17
반응형

[개발 환경 설정]

개발 툴 : VS CODE

개발 언어 :NodeJs

 

[사전 설정]

 

[app.js : 소스 코드]

// ----------------------------------------------------------------------------------------------

// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
const express = require('express')
const app = express()



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
app.set('view engine', 'ejs') // [Page] : [Render]
app.set('views', './views') // [Page] : [Render]



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
var bodyParser = require('body-parser'); // [body-parser 사용]

app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
var nocache = require('nocache'); // [nocache 사용]
app.use(nocache());



// ---------------------------------------
// [모듈 추가]
// ---------------------------------------
var axios = require('axios'); // [axios 사용]

// ----------------------------------------------------------------------------------------------

// [Server] : [Start]
//*
app.listen(3000, async function () {
    console.log("")
    console.log("==============================================================================")
    console.log("[Server] :: [Port = 3000] :: [Start]")
    console.log("==============================================================================")
    console.log("")

    // [동기식 HTTP 통신 요청]
    var response = await requestSyncHttp(); // 동기식 요청

    // [로그 출력]
    console.log("")
    console.log("==============================================================================")
    console.log("[Server] :: [Port = 3000] :: [End]")
    console.log("==============================================================================")
    console.log("")
})
// */

// ----------------------------------------------------------------------------------------------

// [http 요청 함수 정의]
function requestSyncHttp(){
    return new Promise(function(resolve, reject){ // [promise 정의]
        console.log("")
        console.log("==============================================================================")
        console.log("[requestSyncHttp] :: [Get] :: [Start]")
        console.log("==============================================================================")
        console.log("")


        try {

            // [주소 정의 실시]
            var REQ_URL = "https://jsonplaceholder.typicode.com/posts";
    
    
            // [데이터 전송 파라미터 정의]
            var REQ_PARAM = {"userId":1, "id":1};
    
    
            // [요청 데이터 확인 실시]
            console.log("")
            console.log("==============================================================================")
            console.log("[requestSyncHttp] :: [Get] :: [Http Req]")
            console.log("--------------------------------------------------------------------------")
            console.log("[REQ_URL] :: " + REQ_URL)
            console.log("--------------------------------------------------------------------------")
            console.log("[REQ_PARAM] " + JSON.stringify(REQ_PARAM))
            console.log("==============================================================================")
            console.log("")
    
    
            // [axios 요청 수행 실시]
            axios({
                method: "get", // [요청 타입]
                url: REQ_URL, // [요청 주소]
                params: REQ_PARAM, // [요청 데이터]
                headers: {
                    "Content-Type" : "application/x-www-form-urlencoded;"
                }, // [요청 헤더]
                timeout: 5000 // [타임 아웃 시간]
            })
            .then(function(response) {
                console.log("")
                console.log("==============================================================================")
                console.log("[requestSyncHttp] :: [Get] :: [Http Response]")
                console.log("--------------------------------------------------------------------------")
                console.log("[RESPONSE] :: " + JSON.stringify(response.data))
                console.log("==============================================================================")
                console.log("")
    
                // [동기식 요청을 한 함수로 결과 값 반환 실시]
                resolve(JSON.stringify({"result" : JSON.stringify(response.data)}));
            })
            .catch(function(error) {
                console.log("")
                console.log("==============================================================================")
                console.log("[requestSyncHttp] :: [Get] :: [Http Error]")
                console.log("--------------------------------------------------------------------------")
                console.log("[ERROR] :: " + JSON.stringify(error))
                console.log("==============================================================================")
                console.log("")

                // [동기식 요청을 한 함수로 결과 값 반환 실시]
                reject(JSON.stringify({"error" : error}));
            });
    
        }
        catch (err) {

            // [동기식 요청을 한 함수로 결과 값 반환 실시]
            reject(JSON.stringify({"exception" : err}));
        }    
        
    });                                
};
 

[결과 출력]


반응형
Comments