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

GJ·2021년 11월 11일

문제인식

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일

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

답글 달기