개발가능구역

프론트엔드-백엔드 분리 개발: Mock API로 협업 연습하기 본문

개발자 공부/VS Code

프론트엔드-백엔드 분리 개발: Mock API로 협업 연습하기

oosomall 2025. 10. 16. 14:43
반응형

IntelliJ에서 백엔드를 담당하는 파트너와 VS Code에서 프론트엔드를 담당하는 파트너를 분리했다는 가정 하에

실습을 하는 방법으로 Mock API가 눈에 보였습니다.

 

백엔드 서버가 완성될 때까지 기다릴 필요 없이, VS Code에서만 프론트엔드 작업을 하는 연습을 해보려 합니다!

 

1. 🔍 Mock API란 무엇인가요?

Mock API에서 'Mock'은 '흉내 내다', '가짜의'라는 의미입니다. 즉, Mock API실제 백엔드 서버가 없거나 실행 중이지 않을 때, 서버의 응답을 흉내 내어 프론트엔드 기능을 미리 개발할 수 있게 해주는 가짜 통신 환경입니다.

구분 실제 백엔드 통신 Mock API (가상 통신)
통신 대상 백엔드 파트너가 실행 중인 Spring Boot 서버 VS Code의 JavaScript 코드 자체
활용 목적 실제 서비스 데이터 처리 프론트엔드의 화면 구성 및 데이터 처리 로직 사전 테스트

Mock API의 핵심 기능

Mock API는 특히 시간 지연(네트워크 딜레이)성공/실패 응답을 흉내 낼 수 있어 협업 속도를 크게 높여줍니다.

  • 비동기 흉내: 실제 통신처럼 시간이 걸리는 척하여, 데이터가 도착했을 때 화면이 바뀌는 과정을 정확하게 구현합니다.
  • 에러 상황 연습: 서버 연결 실패나 데이터 오류 등 다양한 에러 상황을 미리 만들어 테스트하여, 오류 발생 시 사용자에게 적절한 메시지를 표시하는 방법을 연습할 수 있습니다.

 


 

2. 🛠️ 실습 준비: POST 요청을 보낼 HTML 요소 준비

저는 기초적인 main.js 파일 연결까지 완료했습니다. 이제 게시글을 저장(POST)하는 기능을 흉내 내기 위해 HTML에 입력 폼을 추가하고, 이 폼에서 데이터를 가져와 Mock API로 전송하는 실습을 진행해 봅시다.

VsIntelliJ.zip
0.00MB
기존에 공부한 파일인데 이걸 손대면 될 듯 합니다! 저는 Live Server 확장 프로그램을 설치한 방법인데 오른쪽 아래에 Go Live를 눌러 웹 브라우저에서 결과를 실시간으로 볼 수 있게 해주는 기능이라고 하네요! Ctrl + S 를 누르면 변합니다!

기존 main.js에 적어둔 건 웹 브라우저 돌리고, F12 눌렀을 때 console창에 "파일이 성공적 . . ."이라고 뜨면 제대로 돌아가는 걸 확인할 수 있습니다! 

index.html 수정하기 (입력 폼 추가)

index.html 파일의 <body> 태그 내부에 다음 코드를 추가하세요.

<main style="padding: 20px;">
    <h2>게시글 작성 (POST 실습)</h2>
    <form id="post-form"> 
        <div>
            <label>제목:</label>
            <input type="text" id="post-title" name="title" required>
        </div>
        <div>
            <label>내용:</label>
            <textarea id="post-content" name="content" required></textarea>
        </div>
        <button type="submit" id="submit-btn">가상으로 데이터 전송</button>
    </form>
    
    <div id="post-result" style="margin-top: 20px; padding: 10px; border: 1px dashed #ddd;">
        전송 대기 중...
    </div>
</main>

참고: id="post-form", id="post-title" 등은 JavaScript에서 이 요소들을 쉽게 찾기 위한 이름표입니다.

 

 


 

3. 🧠 main.js 실습: Mock API로 POST 통신 구현

이제 main.js 파일을 열고, 입력된 데이터를 JSON 형식으로 만들어서 가상 서버에 전송하는 Mock API 로직을 작성해 봅시다.

main.js 파일 내용 (전체 복사)

JavaScript
 
// main.js 파일

// 1. 필요한 HTML 요소 가져오기
const postForm = document.getElementById('post-form');
const resultDiv = document.getElementById('post-result');

// 2. 💡 Mock API 함수 정의: POST 요청 흉내
// 실제 서버에 보낼 데이터(formData)를 인수로 받습니다.
function mockPostApi(formData) {
    return new Promise((resolve, reject) => {
        // 실제 통신처럼 2초 후에 결과를 반환합니다.
        setTimeout(() => {
            console.log("Mock API (POST) 요청 데이터:", formData);

            // 💡 서버에서 성공적으로 저장했을 때 반환할 JSON 데이터 흉내
            const successResponse = {
                status: 201, // 201 Created (자원 생성 성공) 상태 코드 흉내
                message: "게시글이 Mock 서버에 성공적으로 등록되었습니다.",
                id: Math.floor(Math.random() * 1000) 
            };
            
            // 💡 성공을 가정하고 JSON 응답을 전달합니다.
            resolve(successResponse);
            
            // (실패 테스트 시: 서버 에러를 가정하고 싶다면 아래 코드를 사용)
            // reject(new Error("데이터 유효성 검사 실패!")); 

        }, 2000); 
    });
}

// 3. 폼 제출(Submit) 이벤트 리스너 등록
postForm.addEventListener('submit', function(event) {
    event.preventDefault(); // 💡 가장 중요! 폼의 기본 제출 동작(페이지 이동)을 막습니다.

    resultDiv.innerHTML = '<p style="color: blue;">데이터 전송 및 처리 중... (2초 대기)</p>';

    // 4. 입력된 폼 데이터 가져오기
    const title = document.getElementById('post-title').value;
    const content = document.getElementById('post-content').value;
    
    // 5. 💡 JSON 형식으로 데이터 포장
    // 이 형태 그대로 백엔드 파트너의 DTO/Entity로 전달됩니다.
    const postData = {
        title: title,
        content: content,
        writer: "VSCode 개발자"
    };

    // 6. Mock API 호출 및 Promise 체이닝 시작
    mockPostApi(postData) // JSON 데이터를 Mock API에 전달
        .then(response => {
            // 7. 성공 응답을 받았을 때 실행되는 로직
            console.log("POST 성공 응답:", response);
            
            resultDiv.innerHTML = `
                <h3 style="color: green;">✅ 전송 및 저장 성공!</h3>
                <p>메시지: ${response.message}</p>
                <p>할당된 ID: ${response.id}</p>
                <p>전송된 데이터: ${JSON.stringify(postData)}</p>
            `;
            postForm.reset(); // 폼 초기화

        })
        .catch(error => {
            // 8. 오류가 발생했을 때 실행되는 로직
            console.error("POST 통신 오류:", error);
            resultDiv.innerHTML = `<h3 style="color: red;">❌ 전송 실패!</h3><p>오류: ${error.message}</p>`;
        });
});

4. ✨ 결과 확인 및 다음 단계

실습 확인

  1. VS Code에서 main.js 파일을 저장합니다.
  2. Live Server 브라우저 화면에서 **"제목"**과 **"내용"**을 입력합니다.
  3. "가상으로 데이터 전송" 버튼을 클릭합니다.
  4. 2초 후, "전송 및 저장 성공!" 메시지와 함께 전송한 데이터가 표시되는 것을 확인합니다.

Mock API를 실제 API로 전환하는 방법

백엔드 파트너가 Spring Boot에서 실제 POST API를 완성하면, 당신은 main.js 파일에서 mockPostApi(postData) 호출 부분 대신 아래와 같이 Fetch API 코드로 교체해 주기만 하면 됩니다. 로직의 나머지 부분은 전혀 수정할 필요가 없습니다!

JavaScript
 
// 💡 실제 Fetch API로 전환 (참고)
fetch('http://localhost:8080/api/save', { // 실제 서버 주소와 엔드포인트
    method: 'POST',
    headers: {
        'Content-Type': 'application/json' // JSON 형식임을 서버에 알려줍니다.
    },
    body: JSON.stringify(postData) // JSON 문자열로 변환하여 전송
})
// ... 이후 .then() 및 .catch() 로직은 그대로 사용합니다.

 

이렇게 Mock API를 사용해 백엔드 서버 없이도 프론트엔드의 핵심 기능(데이터 전송 및 처리)을

구현하는 방법에 대해 하나 알게 되었습니다.

 

반응형