# 最初のリクエスト (/ja/docs/get-started/first-request)

このページでは、何もない状態のEcholotから、リクエストを送ってレスポンスを読むところまで進みます。
使うのは`https://demo.echolot.dev`の[デモAPI](/docs/tutorials/demo-api)です。設定なしで応答する、架空のアウトドア用品店です。

## 1. ワークスペースを作成する [#1-create-a-workspace]

ワークスペースは、リクエストをファイル1つずつにして保存するフォルダです。まず1つ作成します。

<Steps>
<Step>

ようこそウインドウで**新規ワークスペース…**を選びます（または**ファイル › 新規ワークスペース…**、<kbd>⌥</kbd><kbd>⌘</kbd><kbd>N</kbd>）。

</Step>
<Step>

`Alpenglow.echolot`などの名前を付け、保存先を選んで、**作成**を選びます。

</Step>
</Steps>

ワークスペースは専用のウインドウで開きます。中身は空なので、ページには**このワークスペースは空です**と表示されます。

## 2. リクエストを作る [#2-make-a-request]

<Steps>
<Step>

ページの**新規リクエスト**を選ぶか、<kbd>⌘</kbd><kbd>N</kbd>を押します。**新規リクエスト**という名前のリクエストがサイドバーに現れ、名前が選択された状態になります。
`List products`と入力して<kbd>Return</kbd>を押します。

</Step>
<Step>

ページ上部のアドレスフィールド（<strong>URLを入力（\{\{variables\}\}を使用可能）</strong>と表示されています）をクリックして、次のように入力します。

```txt
https://demo.echolot.dev/v1/products?category=tents&per_page=5
```

メソッドは**GET**で、今回はこれで問題ありません。**パラメータ**タブに`category`と`per_page`が並びます。編集はそこでも、アドレスの中でもできます。

</Step>
</Steps>

保存の操作は不要です。入力をやめて少しすると、Echolotはリクエストをワークスペースのフォルダ内の`.req.toml`ファイルに書き込みます。
サイドバーの下部にあるワークスペース名の横に**すべて保存済み**と表示されます。

<Callout title="cURLコマンドがすでにありますか？">
  アドレスフィールドにペーストしてください。Echolotがメソッド、アドレス、ヘッダー、ボディ、認証を取り込みます。使えなかった内容は、アドレスバーの下に一覧で表示されます。
</Callout>

## 3. 送信する [#3-send-it]

<kbd>⌘</kbd><kbd>R</kbd>を押すか、**送信**を選びます。<kbd>⌘</kbd><kbd>↩</kbd>でも送信できます。実行中は**送信**が**キャンセル**（<kbd>⌘</kbd><kbd>.</kbd>）に変わります。

<Shot id="get-started-first-response" alt="送信したList productsリクエスト。レスポンスの上にステータス200、レスポンスペインにJSONのボディが表示されている" />

## 4. レスポンスを読む [#4-read-the-response]

レスポンスペインはリクエストの横に表示されます（上下に並べるレイアウトを選んだ場合は下に表示されます）。

- **レスポンスの上の行**には、ステータス（`200 OK`）、時間、サイズが表示されます。ポインタを重ねると詳細が表示されます。サイズ、各段階（DNS、接続、TLS、待機、転送）にかかった時間、TLS接続、リダイレクトです。
- **ボディ**にはボディが表示されます。上にある**表示**の選択肢で、読み方を切り替えられます。**テキスト**、**JSON**（整形済み）、**JSONツリー**、そして他の内容の場合は**XML**、**フォーム**、**MessagePack**、**プレビュー**です。
  最初に選ばれるのは、コンテンツタイプに合ったものです。<kbd>⌘</kbd><kbd>F</kbd>でボディ内のテキストを検索できます。
- **ヘッダー**にはレスポンスヘッダーが並びます。デモAPIは、合計件数を`X-Total-Count`に、次のページを`Link`に入れます。
- **Cookie**には、レスポンスが設定したCookieが並びます。
- **生データ**と**16進数**は、受信したままのバイトを表示します。**通信**は、ネットワーク上でやり取りされた内容全体を、送信と受信の両方で表示します。
- **テスト**には、リクエストのチェックの結果が表示されます（チェックがある場合）。

すべてのレスポンスは、リクエストの[履歴](/docs/workspaces/history)（<kbd>⌘</kbd><kbd>Y</kbd>）にも保存されます。後から開いて、次のレスポンスと比較できます。

## 5. チェックを追加する [#5-add-a-check]

チェックは送信のたびに実行され、APIが期待どおりに応答しなくなったときに知らせてくれます。

1. リクエストの**テスト**タブを開きます。
2. <strong>レスポンスから生成…</strong>を選びます。Echolotが、今受け取ったレスポンスからチェックを提案します。ステータス、コンテンツタイプ、JSONの値などです。
3. 使いたいものにチェックを入れて、**N件のテストを追加**を選びます（ボタンには、チェックを入れた数が表示されます）。
4. もう一度送信します。レスポンスの**テスト**タブに、各チェックの成功と失敗が表示されます。

チェックの種類は、[スクリプトとテスト](/docs/requests/scripts-and-tests)で説明しています。

## 次のステップ [#next-steps]

- ボディを送る：別のリクエストを作成し、メソッドを**POST**、アドレスを`https://demo.echolot.dev/echo/anything`にして、**ボディ**タブにJSONを入力します。デモは受け取った内容をそのまま返します。
- **リクエスト › cURLとしてコピー**（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>C</kbd>）でリクエストをcURLコマンドとしてコピーするか、**リクエスト › コードを生成…**（<kbd>⌥</kbd><kbd>⌘</kbd><kbd>G</kbd>）でコードを生成します。
- サーバのアドレスを変数にして、環境を追加する：[環境](/docs/workspaces/environments)。
- 画面の見方を知る：[ウインドウ](/docs/get-started/the-window)。
- より長いチュートリアルに進む：[最初のワークスペース](/docs/tutorials/first-workspace)。

<Callout type="warn" title="デモAPIは共有です">
  1つのアドレスにつき、1分あたり120リクエストまで受け付けます（大きいレスポンス、遅いレスポンス、ストリーミングのエンドポイントは1分あたり10リクエスト）。上限を超えると、`Retry-After`ヘッダー付きの`429 Too Many Requests`が返ります。その秒数だけ待ってから、もう一度送信してください。
</Callout>
