# 요청 본문 (/ko/docs/requests/body)

<strong>본문</strong> 탭은 헤더 다음에 요청이 보낼 내용을 설정합니다. 탭 맨 위 줄에서 유형을 선택하면 아래 편집기가 그에 맞게 바뀝니다. 요청에 본문이 있으면 탭에 점이
표시됩니다.

<Shot id="requests-http-body-json" alt="JSON을 선택한 Create order의 본문 탭: 편집기의 주문 항목과 오른쪽의 보기 좋게 정렬 버튼" />

## 본문 유형 [#body-types]

| 유형 | 보내는 내용 | Echolot이 추가하는 Content-Type |
| --- | --- | --- |
| <strong>없음</strong> | 본문 없음. | 없음 |
| <strong>JSON</strong> | 편집기의 텍스트. | `application/json` |
| <strong>URL 인코딩</strong> | 웹 양식이 전송하는 방식의 이름과 값 쌍. | `application/x-www-form-urlencoded` |
| <strong>멀티파트</strong> | 파일 업로드가 있는 웹 양식이 전송하는 방식의 텍스트 필드와 파일. | 경계(boundary)가 포함된 `multipart/form-data` |
| <strong>GraphQL</strong> | 쿼리 텍스트 그대로. | `application/graphql` |
| <strong>원본</strong> | 텍스트, XML 또는 HTML. 두 번째 줄의 칩에서 선택합니다. | `text/plain`, `application/xml` 또는 `text/html` |
| <strong>바이너리</strong> | 파일을 바이트 단위로 그대로. | 없음 |

Content-Type은 <strong>헤더</strong> 탭의 <strong>자동 생성</strong>에 표시됩니다. 다른 값을 보내려면 직접 `Content-Type` 헤더를 추가하십시오. Echolot의 값 대신 그 헤더가
전송됩니다. 길이와 프레이밍 헤더는 요청을 보낼 때 계산됩니다.

모든 텍스트 본문에는 `{{variables}}`와 [동적 값](/docs/requests/dynamic-values)을 넣을 수 있으며, 보낼 때 값이 채워집니다.

```json
{
  "lines": [{ "sku": "{{productId}}", "quantity": 1 }],
  "note": "Sent at {{$isoTimestamp}}"
}
```

## JSON [#json]

편집기에 JSON을 입력하거나 붙여넣습니다. 줄 번호, 구문 색상, 변수용 `{{` 목록이 제공됩니다.

<strong>보기 좋게 정렬</strong>을 클릭하면 JSON이 들여쓰기됩니다. 변수는 쓴 그대로 유지되므로 문자열 안이나 단독 값으로 있는 `{{productId}}`는 건드리지 않습니다.
패널이 좁으면 버튼에 마법 지팡이 아이콘만 표시됩니다.

직접 해 보려면 Alpenglow 예제에서 <strong>Orders › Create order</strong>를 열어 본문을 확인하거나, 받은 본문을 그대로 돌려주는 <strong>Echo › Echo anything</strong>을 보내 보십시오.

## URL 인코딩 [#url-encoded]

필드는 헤더처럼 <strong>키</strong>와 <strong>값</strong>의 표에 놓입니다.

- <strong>필드 추가</strong>를 클릭하면 필드가 추가됩니다. 체크한 필드는 보내고, 체크를 해제한 필드는 보관만 하고 보내지 않습니다.
- <strong>일괄 편집</strong>을 클릭하면 모든 필드를 한 줄에 `Name: value` 하나씩 텍스트로 편집하며, 꺼진 필드는 앞에 `//`를 붙입니다.

Echolot은 보낼 때 이름과 값을 인코딩하며 변수가 삽입하는 내용도 인코딩하므로, 값에 있는 `+`, `&`, 공백은 그 문자 그대로 전달됩니다.

## 멀티파트 [#multipart]

각 행은 양식의 한 부분입니다.

1. 체크 상자를 선택해 필드를 보냅니다.
2. <strong>이름</strong>을 입력합니다.
3. <strong>텍스트</strong> 또는 <strong>파일</strong>을 선택합니다.
   - <strong>텍스트</strong>는 <strong>값</strong>을 입력합니다. `{{variables}}`를 넣을 수 있습니다.
   - <strong>파일</strong>은 <strong>선택…</strong>을 클릭하고 파일을 고릅니다. 이름이 없는 필드는 확장자를 뺀 파일 이름을 사용합니다. 해당 부분은 파일 이름을 filename으로
     가집니다.
4. 필요하면 그 부분의 콘텐츠 <strong>유형</strong>을 `image/png`처럼 입력합니다. 비워 두면(`type (auto)`) 파일은 확장자(`.json`, `.png`, `.pdf` 등, 그 외에는
   `application/octet-stream`)에 따라 유형이 정해지고 텍스트 필드에는 유형이 지정되지 않습니다.

<strong>필드 추가</strong>를 클릭하면 행이 하나 더 생기고, <strong>−</strong> 버튼은 행을 제거합니다. 파일은 요청을 보낼 때 디스크에서 스트리밍되므로 큰 업로드도 메모리에 전부 올릴
필요가 없습니다.

## GraphQL [#graphql]

<strong>GraphQL</strong>은 쿼리 텍스트를 `Content-Type: application/graphql`로 본문에 담아 보내며, 쿼리를 그런 방식으로 받는 서버를 위한 것입니다. 변수, 스키마 기반
자동 완성, 스키마 탐색기, 구독을 갖춘 본격적인 GraphQL 클라이언트가 필요하면 <strong>새로운 GraphQL 요청</strong>을 대신 만드십시오. [GraphQL](/docs/requests/graphql)을
참고하십시오.

## 원본: 텍스트, XML, HTML [#raw-text-xml-and-html]

<strong>원본</strong>을 선택한 다음 옆 줄에서 <strong>텍스트</strong>, <strong>XML</strong>, <strong>HTML</strong> 중 하나를 선택합니다. 편집기는 XML과 HTML에 색상을 입히며, Content-Type은 선택에 따라
정해집니다.

## 바이너리: 파일 [#binary-a-file]

<strong>바이너리</strong>를 선택한 다음 <strong>파일 선택…</strong>을 클릭하고 보낼 파일을 고릅니다. 탭에 파일의 이름, 크기, 경로가 표시되며 <strong>다른 파일 선택…</strong>으로 바꿀 수 있습니다.
파일은 크기와 관계없이 요청을 보낼 때마다 디스크에서 읽으므로, 요청은 항상 파일의 현재 상태를 보냅니다. 파일을 선택하기 전에는 아무것도 보내지 않습니다.

<Edition only="appstore">
  App Store 버전은 사용자가 직접 선택한 파일만 읽을 수 있습니다. <strong>본문</strong> 탭에서 선택한 파일은 이후에 보낼 때도 계속 읽을 수 있습니다. 요청이 앱에 접근
  권한이 주어진 적 없는 파일(예: 팀원이 자기 Mac에서 선택한 파일)을 가리키면 보내기가 중단되고 응답 패널에 <strong>접근 허용…</strong>이 표시됩니다. 파일을 선택하면
  요청이 다시 전송됩니다.
</Edition>

## 본문이 저장되는 위치 [#where-bodies-are-saved]

직접 입력한 본문은 요청 옆의 별도 파일에 저장됩니다. 예를 들어 `create-order.req.toml` 옆에 `create-order.body.json`이 생기므로 Git에서 읽기 좋습니다.
바이너리 본문은 파일의 경로로 저장됩니다. [작업 공간 파일](/docs/reference/workspace-files)을 참고하십시오.

## 큰 본문 [#large-bodies]

바이너리 및 멀티파트 파일은 요청이 나갈 때 디스크에서 스트리밍되므로 크기와 관계없이 메모리에 올리지 않고 업로드됩니다. 응답은 별개입니다. 응답은 도착하는 대로
디스크에 기록되며, 수백 메가바이트가 되어도 뷰어에서 빠르게 유지됩니다. [응답](/docs/requests/responses#large-responses)을 참고하십시오.
