[typescript] REST API 호출 시 리다이렉션 처리 방법

웹 애플리케이션을 개발하거나 REST API를 사용하다 보면 서버로부터의 응답으로 3xx 상태 코드(리다이렉션)를 받을 때가 있습니다. 이 상황에서는 클라이언트가 새로운 위치로 리다이렉트되어야 합니다. 이 글에서는 TypeScript로 REST API 호출 시 발생하는 리다이렉션을 처리하는 방법에 대해 알아보겠습니다.

1. fetch API를 사용한 리다이렉션 처리

fetch API를 사용하여 REST API를 호출할 때, 리다이렉션 응답을 처리하는 방법에 대해 알아보겠습니다. 리다이렉션 상태 코드는 클라이언트 측에서 자동으로 처리되지 않기 때문에, 직접 처리해 주어야 합니다. 다음은 fetch API를 사용하여 리다이렉션 응답을 처리하는 예제입니다.

const response = await fetch('https://api.example.com/resource', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  },
  redirect: 'follow' // 리다이렉션을 자동으로 따르도록 설정
});

if (response.redirected) {
  const redirectedResponse = await fetch(response.url, {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json'
    }
  });
  // 리다이렉트된 응답 처리
}

위 예제에서는 fetch API의 redirect 옵션을 사용하여 리다이렉션을 자동으로 따르도록 설정하고, redirected 속성을 사용하여 리다이렉트 여부를 확인한 후, 리다이렉트된 경우 새로운 위치로 요청을 재전송하여 처리하고 있습니다.

2. Axios를 사용한 리다이렉션 처리

Axios는 HTTP 클라이언트 라이브러리로, Promise 기반으로 작동하여 REST API 호출에 많이 사용됩니다. Axios를 사용하여 REST API를 호출할 때, 리다이렉션 응답을 처리하는 방법은 다음과 같습니다.

import axios from 'axios';

axios.get('https://api.example.com/resource', {
  maxRedirects: 5, // 최대 리다이렉트 횟수 설정
}).then(response => {
  // 응답 처리
}).catch(error => {
  if (error.response.status >= 300 && error.response.status < 400) {
    // 리다이렉션 응답 처리
  } else {
    // 기타 오류 처리
  }
});

Axios를 사용할 때는 maxRedirects 옵션을 사용하여 최대 리다이렉트 횟수를 설정할 수 있습니다. 또한, 에러 핸들링을 통해 리다이렉션 응답을 처리할 수 있습니다.

3. 리다이렉션 처리 관련 주의사항

리다이렉션 처리 시 주의해야 할 몇 가지 사항이 있습니다.

리다이렉션은 HTTP 통신에서 중요한 요소이며, 올바르게 처리하도록 주의해야 합니다.

이상으로 TypeScript를 사용하여 REST API 호출 시 리다이렉션을 처리하는 방법에 대해 알아보았습니다.

참고 문헌: