개발자를 희망하는 초보의 자기개발 이야기

코딩 질문 잘하는 방법 본문

프론트엔드(Front-end)

코딩 질문 잘하는 방법

클라우드아실 2024. 8. 22. 13:49
반응형

1. 본인이 기대했던 결과가 무엇인지에 대한 간략한 설명

예시:

  • "로그인 버튼을 클릭하면 사용자가 대시보드 페이지로 이동할 것으로 기대했습니다."
  • "폼에 값을 입력하고 제출했을 때, 입력된 정보가 콘솔에 출력될 것으로 기대했습니다."

 

2. 실제로 발생한 결과가 무엇인지에 대한 간략한 설명

예시:

  • "로그인 버튼을 클릭해도 페이지가 전환되지 않고, 아무런 반응이 없었습니다."
  • "폼 제출 후 콘솔에 아무것도 출력되지 않았고, 페이지가 새로 고침되었습니다."

 

3. 관련있다고 생각되는 코드 첨부

예시:

  • "아래는 로그인 버튼 클릭 시 실행되는 handleLogin 함수의 코드입니다."
function handleLogin() {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;

  // 서버로 로그인 요청을 보냄
  fetch('/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ username, password }),
  })
  .then(response => {
    if (response.ok) {
      // 로그인 성공 시 대시보드로 이동
      window.location.href = '/dashboard';
    } else {
      // 로그인 실패 시 에러 메시지 출력
      alert('Login failed. Please check your credentials.');
    }
  })
  .catch(error => {
    console.error('Error during login:', error);
  });
}

 

4. 개발자 도구 console 스크린샷 첨부

예시:

  • "로그인 버튼을 클릭한 후 개발자 도구 콘솔에 아래와 같은 오류 메시지가 표시됩니다."

 

+@ 해결과정 기록(매우 중요!)

예시:

문제 요약: 로그인 버튼 클릭 시 페이지가 전환되지 않고, 콘솔에 특별한 오류 메시지도 나타나지 않음. 예상했던 결과는 로그인 성공 시 대시보드로의 페이지 이동.

원인 분석:

  • 서버로의 요청이 성공적으로 이루어지지 않거나, 서버에서 반환된 응답이 클라이언트 코드에서 적절히 처리되지 않았을 가능성이 있음.
  • fetch API를 통해 서버에 로그인 요청을 보냈지만, 응답 처리에서 문제가 발생했을 가능성이 있음.
  • 서버에서 비정상적인 응답을 반환했을 때, 이를 적절히 처리하지 않아 발생한 문제로 추정됨.

해결 방법:

  1. fetch 호출 개선:
    • 응답이 ok가 아닌 경우에도 적절히 처리하기 위해 오류 응답에 대한 처리를 추가.
    • response.json()을 호출하여 서버에서 반환된 메시지를 기반으로 오류를 발생시키고, 이를 사용자에게 알림으로 출력하도록 수정.
  2. 코드 변경 사항: 기존 코드를 아래와 같이 수정함으로써 문제를 해결함.
function handleLogin() {
  const username = document.getElementById('username').value;
  const password = document.getElementById('password').value;

  fetch('/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ username, password }),
  })
  .then(response => {
    if (!response.ok) {
      // 비정상 응답을 처리
      return response.json().then(errorInfo => {
        throw new Error(errorInfo.message || 'Login failed');
      });
    }
    return response.json(); // 성공한 경우 응답을 JSON으로 변환
  })
  .then(data => {
    // 로그인 성공 시 대시보드로 이동
    window.location.href = '/dashboard';
  })
  .catch(error => {
    // 에러 메시지를 사용자에게 출력
    console.error('Error during login:', error);
    alert('Login failed. Please check your credentials.');
  });
}

설명:

  • response.json(): 서버에서 반환한 JSON 데이터를 파싱하여 사용할 수 있도록 변경하였습니다.
  • throw new Error: 오류 응답에 대한 처리를 개선하여, 보다 명확한 오류 메시지를 출력하도록 하였습니다.
  • 에러 처리 개선: catch 블록에서 발생한 오류를 보다 명확하게 표시하고 사용자에게 알림을 제공합니다.

결과:

  • 코드 변경 후 로그인 버튼을 클릭했을 때, 사용자가 정상적으로 대시보드 페이지로 이동함을 확인함.
  • 잘못된 사용자 정보로 로그인 시도 시, 적절한 오류 메시지가 표시되도록 기능이 동작함.

추가 메모:

  • 이번 문제는 서버 응답 처리 부분에서의 예외 처리 부족이 원인이었음. 앞으로 유사한 기능 구현 시, 응답 처리와 오류 발생 시의 시나리오를 충분히 고려해야 함.
  • 개발자 도구의 네트워크 탭과 콘솔 로그를 통해 문제를 진단하는 방법이 유용했음.
반응형