javascript responseType blob일때 error response json으로 받기

GJ·2021년 11월 11일
1

문제인식

Axios 요청을 할때 responseType을 blob으로 설정하면 error response조차 blob으로 반환되었다.

해결방법

blob으로 반환된 response를 Blob 객체의 text메소드를 사용해서 문자열로 변환한다.
이 문자열을 다시 json으로 변환해서 기존처럼 사용할 수 있다.
다만 Blob.text() 메소드는 비동기로 작동하므로 async, await를 사용해야 한다.

...
} catch (error) {
  if (error.response) {
    // responseType이 blob이기 때문에 error정보도 blob으로 오며, 이것을 json으로 다시 변환해 주어야 한다.
    const responseData = JSON.parse(await error.response.data.text());
    if (responseData.detail) {
      alert(responseData.detail);
    } else {
      alert("Error");
    }
  } else if (error.request) {
    alert("Network or Server has a problem.");
  }
} finally {
...
profile
Frontend Developer

3개의 댓글

comment-user-thumbnail
2022년 7월 29일

axio 인터셉터에 에러핸들링 리팩토링중인데 도움이 많이 됬습니다 :-) 좋은하루 되세용

1개의 답글
comment-user-thumbnail
2024년 5월 28일

도움됐습니다. 감사합니다 :)

답글 달기