Server Replay

개요

Server Replay는 캡처된 HTTP 응답을 저장해 두었다가, 동일한 요청이 들어올 때 실제 서버에 요청하지 않고 저장된 응답을 즉시 반환하는 기능입니다.

이 기능은 다음과 같은 상황에서 유용합니다.

  • 오프라인 개발: 서버에 접근할 수 없는 환경(비행기, VPN 미연결 등)에서 이전에 캡처한 응답으로 개발을 계속할 수 있습니다.
  • 불안정한 API 대체: 간헐적으로 실패하거나 응답 시간이 일정하지 않은 외부 API의 정상 응답을 저장해 두면, 안정적인 개발 환경을 유지할 수 있습니다.
  • 빠른 반복 테스트: 느린 API 호출(예: 외부 결제 API, ML 추론 API)의 응답을 저장하면 매번 서버 응답을 기다리지 않고 즉시 결과를 확인할 수 있습니다.
  • API 목(Mock) 서버 대체: 별도의 목 서버를 구축하지 않고도 실제 서버의 응답을 재사용하여 프론트엔드 개발이 가능합니다.

인터셉트 규칙의 Block 액션과 비교하면, Server Replay는 실제 서버의 응답을 그대로 재사용하므로 헤더, 쿠키, 바디 구조 등이 실제 환경과 동일합니다. 응답 내용을 직접 작성할 필요 없이 한 번 캡처한 응답을 반복 사용할 수 있어 간편합니다.


동작 방식

매칭 기준

Server Replay는 HTTP 메서드URL의 조합으로 요청을 매칭합니다.

예를 들어 다음 요청의 응답을 저장해 두었다면:

GET https://api.example.com/users/123

이후 동일한 GET https://api.example.com/users/123 요청이 들어올 때 저장된 응답이 반환됩니다.

매칭 흐름

  1. 클라이언트로부터 HTTP 요청 수신
  2. Server Replay가 활성화되어 있는지 확인
  3. 저장된 엔트리 중 요청의 메서드와 URL이 일치하는 항목 검색
  4. 일치하는 항목이 있으면 저장된 응답을 즉시 반환 (서버 요청 생략)
  5. 일치하는 항목이 없으면 정상적으로 서버에 요청 전달
flowchart TD
    A[HTTP 요청 수신] --> B{Server Replay<br/>활성화?}
    B -->|비활성화| E[서버로 전달]
    B -->|활성화| C{메서드 + URL<br/>매칭?}
    C -->|매칭됨| D[저장된 응답 반환<br/>서버 요청 생략]
    C -->|매칭 없음| E
    E --> F[서버 응답 수신]

    style D fill:#c8e6c9
    style E fill:#e1f5fe

제한 사항

  • POST 요청의 바디는 매칭 기준에 포함되지 않습니다. 동일한 URL에 서로 다른 바디를 보내는 POST 요청은 구분되지 않으며, 먼저 저장된 응답이 반환됩니다.
  • 쿼리 파라미터는 URL의 일부로 포함됩니다. ?page=1?page=2는 서로 다른 URL로 취급됩니다.
  • 요청 헤더는 매칭 기준에 포함되지 않습니다. Accept, Authorization 등 헤더가 달라도 URL과 메서드가 같으면 동일한 응답이 반환됩니다.
  • 동일한 메서드 + URL의 중복 엔트리는 자동으로 방지됩니다. 같은 요청을 다시 추가하면 기존 엔트리가 교체됩니다.

다른 기능과의 관계

인터셉트 규칙이 설정되어 있고 Server Replay 엔트리도 존재하는 경우, 두 기능이 동시에 동일한 요청에 영향을 줄 수 있습니다. 특정 요청에 대해 예상과 다른 동작이 발생하면 인터셉트 규칙과 Server Replay 설정을 모두 확인하시기 바랍니다.


사용 방법

Desktop

  1. 응답 저장: 네트워크 대시보드에서 캡처된 트랜잭션을 우클릭하고 Server Replay에 추가합니다. 응답이 포함된 완료된 트랜잭션만 추가할 수 있습니다.
  2. 엔트리 관리: 사이드바에서 Server Replay 메뉴를 선택하면 저장된 엔트리 목록을 확인할 수 있습니다.
  3. 활성화/비활성화: 토글 스위치로 Server Replay 기능 전체를 활성화하거나 비활성화할 수 있습니다. 비활성화하면 모든 요청이 정상적으로 서버에 전달됩니다.
  4. 엔트리 삭제: 개별 엔트리를 삭제하거나 전체 엔트리를 한 번에 삭제할 수 있습니다.

엔트리 정보

각 엔트리는 다음 정보를 표시합니다:

항목설명
HTTP 메서드GET, POST, PUT 등
URL매칭에 사용되는 전체 URL
응답 상태 코드저장된 응답의 HTTP 상태 코드
헤더 수저장된 응답 헤더의 수
바디 크기저장된 응답 바디의 크기