response.headers.get(Content-Type) {js}

  • mdn
  • fetch를 사용해 받은 response가 JSON인지, HTML인지 판별할 수 있는 방법을 알아냈다. 바로 Content-Type을 이용하는 것이다. 이것은 대놓고 나와있지 않아서 찾기가 매우 힘들었다. 하지만 근성의 최승현! 😅 아래의 스니펫이 바로 response가 어떤 타입인지 해석하는 저시기이다.
  • 참고할 것: res.json(), res.text() 를 호출하는 행위는 res 안의 상태를 바꾸기 때문에 최대 한 번밖에 호출할 수 없다.
function errorHandle(res) {
    const contentType = res.headers.get("Content-Type").split(";")[0];
    if (contentType === "text/html") {

      res.text().then(html => {
        document.body.innerHTML = html;
      });

    } else if (contentType === "application/json") {

      res.json().then(error => {
          alert(error.message);

        }).catch((e) => {
          alert("JSON 파싱 에러! 콘솔창을 확인하세요.");
          console.log(e);
        })
    } else {
      alert("알 수 없는 에러! 콘솔창을 확인하세요.");
      console.log(e);
    }
}