[API 개선] useApi 함수에 에러 처리 옵션 추가 및 사용 예시 업데이트
This commit is contained in:
		@@ -29,13 +29,16 @@
 | 
			
		||||
          </p>
 | 
			
		||||
          <p class="text-sm text-gray-600">
 | 
			
		||||
            <button
 | 
			
		||||
              @click="
 | 
			
		||||
                useApi<ApiResponse<{}>>('/files/download/1756167537354001', {
 | 
			
		||||
                  method: 'get',
 | 
			
		||||
                })
 | 
			
		||||
              "
 | 
			
		||||
              class="mr-2 bg-blue-500 hover:bg-blue-600 text-white px-3 py-1 rounded"
 | 
			
		||||
              @click="apiTest"
 | 
			
		||||
            >
 | 
			
		||||
              Test
 | 
			
		||||
              자동 에러 처리
 | 
			
		||||
            </button>
 | 
			
		||||
            <button
 | 
			
		||||
              class="bg-green-500 hover:bg-green-600 text-white px-3 py-1 rounded"
 | 
			
		||||
              @click="apiTestWithCustomError"
 | 
			
		||||
            >
 | 
			
		||||
              직접 에러 처리
 | 
			
		||||
            </button>
 | 
			
		||||
          </p>
 | 
			
		||||
        </div>
 | 
			
		||||
@@ -119,6 +122,47 @@ definePageMeta({
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
const userStore = useUserStore();
 | 
			
		||||
 | 
			
		||||
// 테스트 다운로드 함수 (자동 에러 처리)
 | 
			
		||||
const apiTest = async () => {
 | 
			
		||||
  const response = await useApi<ApiResponse<object>>(
 | 
			
		||||
    "/admin/common-codes/USER_STATUS_ACTIVE222"
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  if (response) {
 | 
			
		||||
    console.log("response:", response);
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// 직접 에러 처리하는 함수 예시
 | 
			
		||||
const apiTestWithCustomError = async () => {
 | 
			
		||||
  try {
 | 
			
		||||
    const response = await useApi<ApiResponse<object>>(
 | 
			
		||||
      "/admin/common-codes/USER_STATUS_ACTIVE222",
 | 
			
		||||
      {
 | 
			
		||||
        handleError: false, // 에러를 직접 처리하겠다는 의미
 | 
			
		||||
        showAlert: false, // alert는 표시하지 않음
 | 
			
		||||
      }
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    if (response) {
 | 
			
		||||
      console.log("response:", response);
 | 
			
		||||
    }
 | 
			
		||||
  } catch (error: any) {
 | 
			
		||||
    // 에러 타입에 따른 세밀한 처리
 | 
			
		||||
    if (error.response?.status === 404) {
 | 
			
		||||
      alert("[errorCustomHandler]요청한 코드를 찾을 수 없습니다.");
 | 
			
		||||
    } else if (error.response?.status === 403) {
 | 
			
		||||
      alert("[errorCustomHandler]접근 권한이 없습니다.");
 | 
			
		||||
    } else if (error.response?.status >= 500) {
 | 
			
		||||
      alert(
 | 
			
		||||
        "[errorCustomHandler]서버 오류가 발생했습니다. 잠시 후 다시 시도해주세요."
 | 
			
		||||
      );
 | 
			
		||||
    } else {
 | 
			
		||||
      alert("[errorCustomHandler]알 수 없는 오류가 발생했습니다.");
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
};
 | 
			
		||||
</script>
 | 
			
		||||
 | 
			
		||||
<style scoped>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user