PhpStorm 2025.3 ヘルプ

HTTP リクエスト構文の調査

このセクションでは、HTTP リクエストの形式について説明します。HTTP リクエストの送信と HTTP レスポンスの表示の詳細については、「HTTP クライアント」を参照してください。

PhpStorm コードエディターで HTTP リクエストを作成するには、次の一般的な構文を使用します。

Method Request-URI HTTP-Version Header-field: Header-value Request-Body

HTTP リクエストでコメントを使用する

  • リクエスト内で、// または # で任意の行を開始して、コメント行にします。

    // A basic request GET http://example.com/a/

HTTP リクエストの名前を設定する

実行 / デバッグ構成どこでも検索なんでも実行でリクエストをすばやく見つけるために、名前を付けることができます。

  • リクエストの上にある #### @name# @name = の横に名前を入力します。

    Enter the HTTP request name

リクエストに名前がない場合、PhpStorm はリクエストファイル内の位置 ( #1 など) をリクエスト名として使用します。リクエストファイルに同じ名前のリクエストが複数含まれている場合、PhpStorm はそれぞれの名前にリクエストの位置番号を追加します。これにより、各リクエスト名が一意になり、サービスツールウィンドウ、実行 / デバッグ構成などで必要なものを簡単に見つけることができます。

HTTP requests in Services tool window

GET リクエストに短い形式を使用する

  • GET 要求の場合、要求メソッドを省略して URI のみを指定できます。

    // A basic request https://example.com/a/

単一のファイルで複数のリクエストを作成する

  1. リクエストの終わりには、### セパレータをその下に入力します。

    // A basic request https://example.com/a/ ###
  2. セパレータに別のリクエストを作成します。

    // 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

長いリクエストをいくつかの行に分割する

  • すべてのクエリ文字列行をインデントしますが、最初の行はインデントします。

    // 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=Freetown
    GET 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=value5
    POST https://ijhttp-examples.jetbrains.com/post Content-Type: application/x-www-form-urlencoded key1 = value1 & key2 = value2 & key3 = value3 & key4 = value4 & key5 = value5

    x-www-form-urlencoded ボディのラッピングを構成するには、設定 | エディター | コードスタイル | HTTP リクエスト | 折り返しと波括弧 | フォーム URL でコード化されたパラメーターのラップを使用します。= の前後および & の前にスペースを構成するには、設定 | エディター | コードスタイル | HTTP リクエスト | スペースを使用します。

認証を使用して 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] }

    コンテンツタイプヘッダーフィールドの値を PhpStorm でサポートされている言語のいずれかに設定すると、対応する言語フラグメントが HTTP リクエストメッセージ本文に自動挿入されます。コンテンツタイプが指定されていない場合は、言語フラグメントを手動で挿入できます。

  • 要求本体をファイルから読み取るには、< シンボルの後にファイルのパスを入力します。

    // 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 タグが最初のリクエストに追加されます。

HTTP response with redirections

リクエスト履歴へのリクエストの保存を無効にする

必要に応じて、リクエストをリクエスト履歴に保存しないようにすることができます。これは、リクエストに機密データが含まれていて、ログに記録したくない場合に役立ちます。

  • リクエストの前に、@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

デフォルトでは、タイムアウト値は秒単位ですが、値の後に明示的な時間単位を追加できます。ミリ秒の場合は ms、秒の場合は s、分の場合は m で、たとえば 100 ms または 5 m です。

応答を処理する

JavaScript を使用して応答を処理できます。リクエストの後に > 文字を入力し、JavaScript ファイルのパスと名前を指定するか、応答ハンドラーのスクリプトコードを {% ... %} でラップします。

GET https://httpbin.org/get > /path/to/responseHandler.js
GET https://httpbin.org/get > {% client.global.set("my_cookie", response.headers.valuesOf("Set-Cookie")[0]); %}

詳細は、HTTP レスポンス処理 API リファレンスを参照してください。

応答をリダイレクトする

応答をファイルにリダイレクトできます。>> を使用して、接尾辞がすでに存在する場合は新しいファイルを作成し、>>! を使用して、ファイルが存在する場合はファイルを書き換えます。絶対パスまたは現在の HTTP リクエストファイルからの相対パスを指定できます。また、環境変数や次の事前定義された変数など、パスで変数を使用することもできます。

  • {{$projectRoot}} はプロジェクトのルートディレクトリを指します

  • {{$historyFolder}}.idea/httpRequests/ を指します

次の HTTP 要求の例では、HTTP 要求ファイルの隣の myFoldermyFile.json を作成し、応答をそれにリダイレクトします。ファイルがすでに存在する場合は、myFile-1.json が作成されます。

POST https://httpbin.org/post Content-Type: application/json { "id": 999, "value": "content" } >> myFolder/myFile.json

次の HTTP リクエストの例では、.idea/httpRequests/myFile.json を作成します。ファイルがすでに存在する場合は、ファイルを上書きします。また、プロジェクトルートにある handler.js スクリプトを使用して応答を処理します。

POST https://httpbin.org/post Content-Type: application/json { "id": 999, "value": "content" } > {{$projectRoot}}/handler.js >>! {{$historyFolder}}/myFile.json
2025 年 8 月 27 日

関連ページ:

HTTP クライアント

HTTP クライアントプラグインを使用すると、PhpStorm コードエディターで HTTP リクエストを直接作成、編集、実行できます。HTTP リクエストを作成して実行する必要がある場合、主に 2 つのユースケースがあります。RESTful Web サービスを開発していて、それが期待どおりに機能し、仕様に準拠してアクセス可能であり、正しく応答することを確認したい場合。RESTful Web サービスに対応するアプリケーションを開発している場合。この場合、開発を開始する前にサービスへのアクセスと...

どこでも検索

プロジェクト内またはプロジェクト外のアイテムは、その名前で見つけることができます。単一のエントリポイントから、Git 内のファイル、アクション、クラス、シンボル、設定、UI 要素などを検索できます。プロジェクト内のテキストの検索の詳細については、「プロジェクト内のターゲットを検索する」を参照してください。どこでも検索メインメニューで、に移動するか、を 2 回押して検索ウィンドウを開きます。デフォルトでは、PhpStorm は最近使用したファイルのリストを表示します。もう一度を 2 回押すか、...

なんでも実行

なんでも実行は、実行 / デバッグ構成、アプリケーション、スクリプト、コマンド、タスク、最近使用したプロジェクトをすばやく起動するためのツールです。また、入力時に候補を表示することで、適切なコマンド構文の使用をサポートします。コマンドを呼び出すと、なんでも実行が適切なツールに以降の処理を委譲します。なんでも実行ポップアップを開く:を 2 回押します。なんでも実行アイコンをツールバーに追加することもできます。そのためには、設定ダイアログを開き、に移動してメインツールバーノードを展開し、なんでも実...

HTTP クライアント変数

HTTP リクエストを作成する場合、変数を使用してその要素をパラメーター化できます。変数は、リクエストのホスト、ポート、パスの値、クエリパラメーターまたは値、ヘッダー値、リクエストの本文内または外部ファイルで使用される任意の値を保持できます。リクエスト内で変数を使用する変数をとして二重波括弧で囲みます。リクエストで波括弧を使用する必要があるが、それを HTTP クライアント変数として扱わないようにしたい場合は、URL エンコード形式を使用します。の場合は、の場合はです。例:### send UR...

言語と参照のインジェクション

言語インジェクションを使用すると、ファイルのメイン言語とは異なるプログラミング言語のコードを操作できます。文字列リテラルに言語 (HTML、CSS、XML、RegExp など) を挿入すると、それがプロジェクトのメイン言語でなくても、挿入されたコードに対する包括的なコーディング支援が得られます。IDE は、言語インジェクションに加えて、文字列リテラルをクラスやファイルなどの他のエンティティへの参照として扱う参照インジェクションもサポートしています。言語インジェクションを追加する:一時的な言語イ...

ライブテンプレート

ライブテンプレートを使用して、ループ、条件、宣言、print ステートメントなどの一般的な構造をコードに挿入します。コードスニペットを展開するには、対応するテンプレートの省略形を入力してを押します。を押し続けると、テンプレート内の 1 つの変数から次の変数に移動します。を押して、前の変数に移動します。ライブテンプレートの種類:次のタイプのライブテンプレートが区別されます。シンプルなテンプレートには固定プレーンテキストのみが含まれています。シンプルなテンプレートを展開すると、テキストが自動