HTTP リクエスト構文の調査
このセクションでは、HTTP リクエストの形式について説明します。 HTTP リクエストの送信と HTTP レスポンスの表示の詳細については、 HTTP クライアント を参照してください。
IntelliJ IDEA コードエディターで HTTP リクエストを作成するには、次の一般的な構文を使用します。
HTTP リクエストでコメントを使用する
リクエスト内で、
//または#で任意の行を開始して、コメント行にします。// A basic request GET http://example.com/a/
HTTP リクエストの名前を設定する
実行 / デバッグ構成、 どこでも検索、 なんでも実行でリクエストをすばやく見つけるために、名前を付けることができます。
リクエストの上にある
###、# @name、# @name =の横に名前を入力します。
リクエストに名前がない場合、IntelliJ IDEA はリクエストファイル内の位置 (#1 など) をリクエスト名として使用します。 リクエストファイルに同じ名前のリクエストが複数含まれている場合、IntelliJ IDEA はそれぞれの名前にリクエストの位置番号を追加します。 これにより、各リクエスト名が一意になり、 サービス ツールウィンドウ、実行 / デバッグ構成などで必要なものを簡単に見つけることができます。

GET リクエストに短い形式を使用する
GET 要求の場合、要求メソッドを省略して URI のみを指定できます。
// A basic request https://example.com/a/Java コンテキストでは、 コード補完 Ctrl+Space を使用して、定義された
@Pathアノテーションに基づいて URI を指定できます。 Java コードでの@Pathアノテーションへの変更は、候補リストの内容に反映されます。
単一のファイルで複数のリクエストを作成する
リクエストの終わりには、
###セパレータをその下に入力します。// A basic request https://example.com/a/ ###セパレータに別のリクエストを作成します。
// A basic request https://example.com/a/ ### // A second request using the GET method https://example.com:8080/api/html/get?id=123&value=content
実行遅延を設定する。
sleep(ms)関数を使うと、HTTP リクエストやスクリプトの実行を指定したミリ秒間、一時停止できます。 これは、さまざまな接続テストや WebSocket テストなどに特に便利です。sleep()関数とawaitキーワードを組み合わせて実行を一時停止します:await sleep(milliseconds)。遅延後にスクリプトのほかの部分をブロックせずにコードを実行したい場合は、 Web API メソッドを使用してください:
setTimeout():指定したミリ秒後に関数を 1 回だけ実行するようにスケジュールします。 タイマー ID を返します。clearTimeout():setTimeout()で設定したタイムアウトをキャンセルします。 タイマー ID を受け付けます。
プリリクエストスクリプトで、HTTP リクエストの実際の送信を遅らせることができます。 レスポンスハンドラー内では、受信したレスポンス後のテスト実行やロジックを遅らせるために関数を使用します。
< {% const job = setTimeout(() => { console.log("This timer is cleared and will not execute."); }, 1000); console.log("Pre-request: Starting sleep..."); clearTimeout(job); const start = Date.now(); await sleep(10000); console.log(`Pre-request: Finished sleep after ${Date.now() - start}ms`); console.log("Pre-request: Proceeding to request."); %} GET https://examples.http-client.intellij.net/anything > {% setTimeout(() => { console.log("Post-script: One second timer fired during sleep."); }, 1000); console.log("Post-script: Starting sleep..."); const start = Date.now(); await sleep(10000); console.log(`Post-script: Finished sleep after ${Date.now() - start}ms`); console.log("Post-script: Script execution complete."); %}
長いリクエストをいくつかの行に分割する
すべてのクエリ文字列行をインデントしますが、最初の行はインデントします。
// Using line breaks with indent GET http://example.com:8080 /api /html /get ?id=123 &value=contentクエリ文字列が原因で URL が長すぎる場合は、専用のコンテキストアクションを使用して、各クエリパラメーターを新しい行に配置できます。 クエリ文字列部分にキャレットを置き、 Alt+Enter (コンテキストアクションの表示) を押して、 クエリパラメーターを別々の行に配置 を選択します。
GET https://example.com:8080/api/get/html?firstname=John&lastname=Doe&planet=Tatooine&town=FreetownGET https://example.com:8080/api/get/html? firstname=John& lastname=Doe& planet=Tatooine& town=Freetown同様に、
Content-Type: application/x-www-form-urlencodedを使用してリクエストの本文をフォーマットできます。 キャレットを本文に置き、 Alt+Enter (コンテキストアクションの表示) を押して、 URL エンコード形式のパラメーターを別々の行に配置 を選択します。POST https://ijhttp-examples.jetbrains.com/post Content-Type: application/x-www-form-urlencoded key1=value1&key2=value2&key3=value3&key4=value4&key5=value5POST https://ijhttp-examples.jetbrains.com/post Content-Type: application/x-www-form-urlencoded key1 = value1 & key2 = value2 & key3 = value3 & key4 = value4 & key5 = value5x-www-form-urlencodedボディのラッピングを構成するには、 を使用します。=の前後および&の前にスペースを構成するには、 を使用します。
認証を使用して Web サービスにアクセスする
アクセスする Web サービスに応じて、 基本(英語)または ダイジェスト (英語) 許可ヘッダーを指定します。
// Basic authentication GET http://example.com Authorization: Basic username password ### // Digest authentication GET http://example.com Authorization: Digest username password
要求メッセージ本文を提供する
リクエストの中に空白行を追加し、次のいずれかを実行します。
リクエスト本文を適切な場所に入力します。
// The request body is provided in place POST https://example.com:8080/api/html/post HTTP/1.1 Content-Type: application/json Cookie: key=first-value { "key" : "value", "list": [1, 2, 3] }コンテンツタイプヘッダーフィールドの値を サポートされている言語の 1 つに設定すると、対応する言語フラグメントが HTTP リクエストメッセージ本文に 自動挿入されます。 コンテンツタイプが指定されていない場合は、言語フラグメントを手動で挿入できます。
Java コンテキストでは、 コード補完 Ctrl+Space を使用して、定義された
@Producesアノテーションに基づいて受諾ヘッダーフィールド値を指定できます。 Java コードでの@Producesアノテーションへの変更は、候補リストの内容に反映されます。要求本体をファイルから読み取るには、
<シンボルの後にファイルのパスを入力します。// The request body is read from a file POST https://example.com:8080/api/html/post Content-Type: application/json < ./input.json
multipart/form-data コンテンツタイプを使用する
要求の コンテンツタイプを マルチパート / フォームデータに設定します。 マルチパート / フォームデータメッセージの一部としてファイルを送信するには、 コンテンツ処理ヘッダーに
filenameパラメーターを含めます。POST https://example.com/api/upload HTTP/1.1 Content-Type: multipart/form-data; boundary=boundary --boundary Content-Disposition: form-data; name="first"; filename="input.txt" // The 'input.txt' file will be uploaded < ./input.txt --boundary Content-Disposition: form-data; name="second"; filename="input-second.txt" // A temporary 'input-second.txt' file with the 'Text' content will be created and uploaded Text --boundary Content-Disposition: form-data; name="third"; // The 'input.txt' file contents will be sent as plain text. < ./input.txt --boundary--
次のリダイレクトを無効にする
HTTP リクエストがリダイレクトされると(3xx ステータスコードが受信されると)、リダイレクトされたページの応答が返されます。 サービス ツールウィンドウでは、リダイレクトされたページの応答と、要求中に発生したすべてのリダイレクトを表示できます。
次のリダイレクトを無効にすることをお勧めします。 この場合、実際のリダイレクト応答ヘッダー(301 または 302 など)が返されます。
リクエストの前に、
@no-redirectタグ付きのコメント行を追加します。// @no-redirect example.com/status/301
リダイレクトされた要求がすでにある場合は、 サービス ツールウィンドウの Redirections リストの横にある 無効化 をクリックできます。 これにより、 @no-redirect タグが最初のリクエストに追加されます。

リクエスト履歴へのリクエストの保存を無効にする
必要に応じて、 リクエストをリクエスト履歴に保存しないようにすることができます。 これは、リクエストに機密データが含まれていて、ログに記録したくない場合に役立ちます。
リクエストの前に、
@no-logタグ付きのコメント行を追加します。// @no-log GET example.com/api
受信した Cookie の Cookie への保存を無効にする jar
必要に応じて、受信した Cookie が Cookie jar に保存されないようにすることができます。 このようにして、 http-client.cookies ファイルから不要な Cookie を手動で削除することを回避できます。
リクエストの前に、
@no-cookie-jarタグ付きのコメント行を追加します。// @no-cookie-jar GET example.com/api
エンコードを無効化する
デフォルトでは、HTTP クライアントはリクエストパラメーターとボディを ASCII 形式にエンコードします。 例: リクエストパラメーター内のスラッシュ文字は %2F として送信されます。 エンコードを無効にして、リクエストをそのまま送信することもできます。
リクエストの前に、
@no-auto-encodingタグ付きのコメント行を追加します。タグを使用すると、リクエストパラメーターと本文はエンコードされません。
# @no-auto-encoding GET https://examples.com/api? name=@#$somebody& qwerty=%40%23%24結果のリクエストは変更されずに送信されます。
https://examples.com/api?name=@#$somebody&qwerty=%40%23%24タグが使用されていない場合、エンコードはデフォルトで有効になります。
### Default behavior GET https://examples.com/api? name=@#$somebody& qwerty=%40%23%24このリクエストでは、パラメーターがエンコードされます。
https://examples.com/api?name=%40%23%24somebody&qwerty=%40%23%24
HTTP リクエストのタイムアウトをカスタマイズする
HTTP クライアントには、サーバーとの接続を確立するための 60 秒のタイムアウトと、進行中の接続で新しいパケットを待機するための別の 60 秒のタイムアウトがあります。 これらのタイムアウトは両方ともカスタマイズできます。
確立された接続で新しいパケットのタイムアウトを設定するには、リクエストの前に
@timeoutタグを含むコメント行を追加します。# @timeout 600 GET example.com/api接続タイムアウトを設定するには、リクエストの前に
@connection-timeoutタグを含むコメント行を追加します。// @connection-timeout 2 m GET example.com/api
デフォルトでは、タイムアウト値は秒単位ですが、値の後に明示的な時間単位を追加できます。ミリ秒の場合は ミリ秒 、秒の場合は s 、分の場合は m 、たとえば 100 ms または 5 m。
応答を処理する
JavaScript を使用して応答を処理できます。 リクエストの後に 戻り値のラップダイアログ 文字を入力し、JavaScript ファイルのパスと名前を指定するか、応答ハンドラーのスクリプトコードを {% ... %} でラップします。
詳細については、 HTTP レスポンス処理 API リファレンス を参照してください。
応答をリダイレクトする
応答をファイルにリダイレクトできます。 >> を使用して、接尾辞がすでに存在する場合は新しいファイルを作成し、 >>! を使用して、ファイルが存在する場合はファイルを書き換えます。 絶対パスまたは現在の HTTP リクエストファイルからの相対パスを指定できます。 また、環境変数や次の事前定義された変数など、パスで変数を使用することもできます。
{{$projectRoot}}はプロジェクトのルートディレクトリを指します{{$historyFolder}}は .idea/httpRequests/ を指します
次の HTTP 要求の例では、HTTP 要求ファイルの隣の myFolder に myFile.json を作成し、応答をそれにリダイレクトします。 ファイルがすでに存在する場合は、 myFile-1.json が作成されます。
次の HTTP リクエストの例では、 .idea/httpRequests/ に myFile.json を作成します。 ファイルがすでに存在する場合は、ファイルを上書きします。 また、プロジェクトルートにある handler.js スクリプトを使用し て応答を処理します。