# 응답 캡처 (/ko/docs/requests/captures)

캡처는 요청의 응답에서 값을 꺼내 보낼 때마다 변수에 보관합니다. 로그인 응답의 액세스 토큰을 `{{token}}`에 캡처하면 `{{token}}`을 사용하는 모든 요청이 복사 없이
최신 토큰을 보냅니다. 토큰이 갱신되면 모든 요청이 새 토큰을 받습니다.

캡처는 요청과 함께 저장되므로 작업 공간을 가진 모든 사람에게 적용되며, **보내기**를 클릭할 때뿐 아니라 실행과 플로에서도 동작합니다.

## 응답에서 값 저장하기 [#store-a-value-from-the-response]

캡처를 만드는 가장 빠른 방법은 응답 자체에서 만드는 것입니다.

1. 요청을 보냅니다. Alpenglow 예제에서는 **Auth › Sign in**을 보냅니다.
2. **본문** 탭에서 **JSON 트리**를 선택합니다(해당 본문이면 **양식**, **MessagePack**, **XML**).
3. `access_token` 같은 값에 포인터를 올리고 <strong>변수에 저장…</strong>을 클릭합니다.
4. **변수 이름**을 입력하거나 경로에서 제안된 이름을 그대로 둡니다. 이미 사용 중인 이름은 입력하는 동안 제안되며, 하나를 고르면 그 변수를 대체합니다(패널에
   **token을(를) 대체함**이라고 표시됨).
5. **저장 위치**에서 윈도우의 환경(**“Staging” 환경**) 또는 **작업 공간**을 선택합니다.
6. **비밀 키**를 체크하면 값을 파일이 아닌 키체인에만 보관합니다. `token`, `secret`, `password`, `apiKey`처럼 자격 증명처럼 보이는 이름이면 처음부터
   체크되어 있습니다.
7. **보낼 때마다 업데이트**를 체크한 채로 두면 요청의 캡처로 만들어져 요청과 함께 저장됩니다. 체크를 해제하면 값을 한 번만 저장합니다.
8. **저장**을 클릭합니다.

<Shot id="requests-http-store-variable" alt="Sign in의 JSON 트리 위에 표시된 변수에 저장 패널: 경로 $.access_token, 변수 이름 token, 저장 위치 작업 공간, 비밀 키와 보낼 때마다 업데이트가 체크됨" />

## 캡처 편집 [#edit-captures]

요청의 캡처는 **변수** 탭의 요청 자체 변수 아래, **응답에서** 항목에 있습니다. 각 행이 캡처 하나입니다.

| 열 | 내용 |
| --- | --- |
| 체크 상자 | 캡처를 실행할지 여부. |
| **변수** | 변수 이름. 중괄호는 쓰지 않습니다. |
| **출처** | 응답에서 값을 읽는 위치. |
| **경로 또는 이름** | JSONPath, XPath, 또는 헤더나 쿠키 이름. |
| **저장 위치** | **환경**(요청을 보낼 때 윈도우에 선택된 환경) 또는 **작업 공간**. |
| **비밀 키** | 작업 공간 파일이 아닌 이 Mac의 키체인에 보관됩니다. 이미 비밀 값인 변수는 계속 비밀 값으로 유지됩니다. |

**값 추가**를 클릭하면 행이 추가되고, **−** 버튼은 행을 제거합니다. 보낸 뒤 각 행에는 값을 저장했으면 초록색 체크 표시가, 저장하지 못했으면 이유와 함께 주황색 경고가
표시됩니다.

### 값을 가져오는 곳 [#where-values-come-from]

| 출처 | 경로 또는 이름 | 예 |
| --- | --- | --- |
| **JSON** | JSON 본문 안의 JSONPath. | `$.access_token` |
| **양식** | 객체로 읽은 URL 인코딩 본문 안의 JSONPath. | `$.access_token` |
| **MessagePack** | JSON으로 읽은 MessagePack 본문 안의 JSONPath. | `$.access_token` |
| **XML** | XML 본문 안의 XPath. | `/auth/token` |
| **헤더** | 이름으로 지정하는 응답 헤더. | `Location` |
| **쿠키** | 이름으로 지정하는, 응답이 설정하는 쿠키. | `session` |
| **상태** | 상태 코드. | |
| **본문** | 텍스트로 읽은 본문 전체. | |

## 환경 또는 작업 공간 [#environment-or-workspace]

- **환경**은 보내는 시점에 윈도우에 선택된 환경에 변수를 씁니다. 스테이징 토큰과 프로덕션 토큰처럼 서버마다 다른 값에 사용하십시오. 선택된 환경이 없으면 아무것도
  저장되지 않으며, 행에 환경을 선택하거나 작업 공간에 저장하라고 표시됩니다.
- **작업 공간**은 어떤 환경을 선택했든 같은 작업 공간 변수를 씁니다.

같은 이름이면 환경의 값이 작업 공간의 값보다 우선하므로, 선택한 환경에 그 이름의 변수가 있으면 작업 공간에 한 캡처는 가려집니다. [환경](/docs/workspaces/environments)을
참고하십시오.

## 비밀 값 [#secrets]

캡처한 비밀 값은 키체인에만 기록됩니다. 작업 공간 파일에는 변수 이름만 있고 값은 들어 있지 않으므로 작업 공간을 커밋해도 안전합니다. 캡처하는 모든 토큰, 세션 ID,
키에는 **비밀 키**를 켜 두십시오. [비밀 값](/docs/workspaces/secrets)을 참고하십시오.

Alpenglow에서는 **Auth › Sign in**이 `$.access_token`을 작업 공간 비밀 값 `token`에 캡처하고, **Orders** 폴더가 이를 Bearer 토큰으로 보냅니다.

## 아무것도 캡처되지 않을 때 [#when-nothing-is-captured]

다음 경우에는 캡처가 변수를 그대로 두고, 보낸 뒤 그 이유를 알려 줍니다.

- 응답 상태가 400 이상일 때: 값은 400 미만의 응답에서만 보관되므로 실패한 로그인이 올바른 토큰을 덮어쓰는 일은 없습니다.
- 경로가 응답에서 아무것도 찾지 못할 때
- 본문이 32 MB보다 클 때
- 환경에 저장하는데 선택된 환경이 없을 때
- 쓰기가 허용되지 않을 때: AI 에이전트가 요청을 보내면 변수를 바꿀 수 있는지는 에이전트의 정책이 결정합니다. [에이전트](/docs/ai/agents)를 참고하십시오.

## 캡처와 응답 값 [#captures-or-response-values]

`{{$response('auth/sign-in', '$.access_token')}}` 같은 [동적 값](/docs/requests/dynamic-values#values-from-other-requests-responses)은 한 요청의
최신 응답을 직접 읽으며, 응답이 없으면 그 요청을 먼저 보냅니다. 캡처는 대신 값을 변수에 복사하므로, 여러 요청이 사용하거나 여러 요청이 갱신할 수 있는 값에 알맞습니다.
둘 다 같은 JSONPath와 XPath를 읽습니다.
