# .proto 파일 (/ko/docs/specs/proto-files)

`.proto` 파일은 gRPC 서비스를 설명합니다. 서비스의 메서드와, 메서드가 받고 반환하는 메시지입니다. 작업 공간에 보관하면
[gRPC 요청](/docs/requests/grpc)이 서버에 묻지 않고도 이 파일로 메시지를 만들고 읽습니다. 명세 페이지는 `.proto` 파일을 OpenAPI 문서
옆에 자체 편집기와 개요와 함께 보여 줍니다.

Alpenglow 예제에는 `alpenglow.inventory.v1.Inventory` 서비스가 있는 `inventory.proto` 하나가 있습니다.

<Shot id="specs-proto" alt="명세 페이지에서 열려 있는 inventory.proto: 왼쪽에는 소스, 오른쪽에는 각각 더하기 버튼이 있는 ListWarehouses, WatchStock, Reserve가 포함된 Inventory 서비스와 그 메시지가 보입니다" />

## 파일 추가 [#adding-a-file]

명세 사이드바의 <strong>명세</strong> 헤더에서 <strong>+</strong>를 클릭합니다.

- **새로운 Proto 파일**은 작은 예제 서비스 `Greeter`가 들어 있는 `specs/service.proto`를 만듭니다. 이것을 직접 만든 서비스로 바꾸세요.
- <strong>Proto 파일 추가…</strong>는 Mac의 `.proto` 파일을 `specs` 폴더로 복사합니다. 다른 파일을 import한다면 그 파일도 `specs`에 복사하세요.
  Google의 잘 알려진 타입(`google/protobuf/timestamp.proto` 등)은 내장되어 있습니다.

파일은 사이드바의 <strong>Proto 파일</strong> 아래에 나열됩니다. 파일을 오른쪽 클릭하면 <strong>Finder에서 보기</strong>와 <strong>삭제…</strong>가 나타납니다. 삭제하기 전에
확인을 요청하며 파일을 휴지통으로 이동합니다. 그 파일을 사용하던 gRPC 요청은 이후 다른 파일이나 서버의 리플렉션이 필요합니다.

## 편집 [#editing]

파일을 클릭해서 엽니다. 왼쪽에 구문 강조가 적용된 소스가 있습니다. 그 위의 막대에는 파일, **Protocol Buffers**, 그리고 **문제 없음** 또는
파서가 찾은 첫 번째 문제(예: `inventory.proto:12: expected “;”`)가 표시됩니다.

오른쪽의 개요는 파일이 선언한 내용을 보여 주며, 입력하는 동안 편집기를 따라갑니다.

- 각 **서비스**와 그 메서드. 각 메서드에는 종류(`unary`, `server streaming` 등)와 입력 및 출력 메시지가 표시됩니다.
- **메시지**와 그 필드 및 타입.
- **열거형**.

파싱할 수 없는 파일에는 <strong>파일을 파싱할 수 있으면 개요가 표시됩니다.</strong>라고 나옵니다.

Echolot은 변경할 때마다 잠시 후, 그리고 다른 파일을 열거나 페이지를 떠날 때 파일을 저장합니다. 파일을 쓸 수 없으면 **Proto 파일을 저장할 수 없습니다**가
표시되며 [명세](/docs/specs/editing#saving)와 같이 **재시도**, **사본 저장…**, **변경 사항 폐기**, **계속 편집**을 제공합니다.
편집한 내용은 저장될 때까지 편집기에 남아 있습니다.

명세 페이지에서는 한 번에 파일 하나만 열 수 있습니다. `.proto` 파일 또는 OpenAPI 명세입니다. 하나를 열면 다른 하나는 저장되고 닫힙니다.

## 메서드로 요청 만들기 [#requests-from-methods]

개요에서 메서드 옆의 <strong>+</strong>를 클릭하면 그 메서드의 gRPC 요청이 만들어집니다. 요청은 이 `.proto` 파일을 사용하고, 해당 서비스와 메서드를
호출하며, 모든 필드가 예시 값으로 채워진 메시지로 시작합니다. URL을 서버로 지정하고 보내세요. [gRPC](/docs/requests/grpc)에서 보내기,
스트리밍 메서드, 파일 대신 서버의 리플렉션에서 메서드를 가져오는 방법을 다룹니다.

## 명령줄에서 [#from-the-command-line]

`echolot grpc describe --proto api.proto`는 파일의 서비스, 메서드, 필드를 나열하고, `echolot grpc call`은 메서드를 호출합니다.
[echolot grpc](/docs/cli/grpc)를 참고하세요.
