DataGrip 2018.3 Help

HTTP Client in DataGrip Code Editor

Install the HTTP Client plugin

To issue REST queries in DataGrip, install the HTTP Client plugin.

  1. Open Settings | Plugins.

  2. Click Install JetBrains plugin.

  3. In the Browse JetBrains Plugins window, type HTTP Client in the search field.

  4. To install the plugin, click Install and restart DataGrip.

When testing a web service, you can create, edit, and execute HTTP Requests directly in the DataGrip code editor.

HTTP Requests are stored in the http and rest files and are marked with the icon.

Before you begin, configure the Proxy settings on the HTTP Proxy page of the Settings/Preferences (Ctrl+Alt+S) dialog if necessary.

Creating an HTTP request file

You can work with HTTP requests either from scratch files or from physical files of the HTTP Request type.

Scratch files can be used to test HTTP requests during development. A scratch file is not stored inside a project, so DataGrip can modify it and add additional information about the request. When an HTTP request is executed from a scratch file, the link to the response output file is added below the request and at the top of the requests history file.

Create an HTTP requests scratch file

  • Press Ctrl+Shift+Alt+Insert and select HTTP Request.

Physical files can be used for documenting, testing and validating HTTP requests. A physical file is stored inside your project, and DataGrip will not modify it. When an HTTP request is executed from a physical file, this file is not modified. Information about the executed request with the link to the response output file is added to the top of the requests history file.

Create a physical HTTP requests file

  • On the File menu, point to New, and then click File. Type a file name and the http extension, click OK.

You can use the Move refactoring (F6) to move HTTP requests from scratches to physical files, as well as between physical files.

Move an HTTP request

  1. In the editor, position the caret at the request to be moved and do one of the following:

    • On the main menu, or on the context menu, choose Refactor | Move.

    • Press F6.

  2. In the dialog box that opens, click browse to select the file or type the full path to the file you want to move the request to. Note that you can specify the name of a non-existing file, in which case a new file with the provided name will be created automatically.

Composing an HTTP request

You can type HTTP requests directly in the created HTTP request file using the following general syntax:

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

DataGrip uses the HTTP request in Editor format, which provides a simple way to create, execute, and store information about HTTP requests. To get an overview of its possibilities, you can explore the HTTP Requests Collection, which is a handful selection of composed requests.

Open a request from the HTTP Requests Collection

  1. Click Open HTTP Requests Collection icon in the top-right corner of the editor or choose Tools | HTTP Client | Open HTTP Requests Collection in the main menu.

  2. In the pop-up menu, select the HTTP Requests collection you wish to open:

    Open HTTP Requests Collection popup

To speed up composing HTTP requests, use live templates. For example, gtr expands to a simple GET request; mptr expands to a multipart/form-data POST request.

Using environment variables

When composing an HTTP request, you can parametrize its elements using environment variables. For example, instead of providing the host name in your request explicitly, you can use the {{host}} placeholder. Then you define a set of environment variables in your project holding the desired host definitions. When you execute the request, DataGrip will let you choose between defined environments, for example, the host to send the request to:

run_request_in_env

The selected environment will be used as the default one when viewing structure of the request and opening the request in the browser, or creating a run/debug configuration for it.

The name of a variable can be arbitrary, but may only contain letters, digits, the underscore symbols (_), or the hyphen symbols (-). A variable can hold the values for the following request components:

  • Request host, port, and path

  • Query parameter or value

  • Header value

  • Arbitrary values provided directly inside the request body or supplied in an external file.

Environment variables are defined in the environment files, which must be stored inside the project:

  • The rest-client.env.json (or http-client.env.json) is a regular file that is meant to be distributed together with your project.

  • The rest-client.private.env.json (or http-client.private.env.json) is a private file that may contain sensitive information (passwords, tokens, certificates, and so on). This file is added to the VCS ignored files list by default. The variables' values specified in a private file override the ones contained in a regular environment file.

Example: Working with environment files

The following sample http-client.env.json environment file defines two environments: development and production.

{ "development": { "host": "localhost", "id-value": 12345, "username": "", "password": "", "my-var": "my-dev-value" }, "production": { "host": "example.com", "id-value": 6789, "username": "", "password": "", "my-var": "my-prod-value" } }

The additional http-client.private.env.json file holds the authorization sensitive data:

{ "development": { "username": "dev-user", "password": "dev-password" }, "production": { "username": "user", "password": "password" } }

The example HTTP request is as follows:

GET http://{{host}}/api/json/get?id={{id-value}}&key={{unresolved_var}} Authorization: Basic {{username}} {{password}} Content-Type: application/json { "key": {{my-var}} }

When you execute the above request, DataGrip provides a choice between the defined execution environments:

run_request_in_env

Depending on your choice, the resulting request will be one of the following:

  • development:

    GET http://localhost/api/json/get?id=12345&key={{unresolved_var}} Authorization: Basic dev-user dev-password Content-Type: application/json { "key": "my-dev-value" }

  • production:

    GET http://example.com/api/json/get?id=6789&key={{unresolved_var}} Authorization: Basic user password Content-Type: application/json { "key": "my-prod-value" }

Since the {{unresolved-var}} variable is not defined in the environment file, DataGrip will send the {{unresolved-var}} text as part of the request in both cases.

Using response handler scripts

Response handler scripts let you programmatically 'react' to a received HTTP response. This enables automated processing of the received data as well as validating it against the conditions you specify. Response handler scripts are provided as part of the request within the HTTP request file and are executed as soon as a response is received. To view the response handling examples, open the auth-requests or test-responses requests collections.

You can insert a response handler script into your request either in-place or by referring to an external file.

Insert the script in place

  • Prepend the script with > and enclose it in {% %}:

    GET host/api/test > {% // Response Handler Script ... %}

Insert the script from an external file

  • Prepend the script with >:

    GET host/api/test > scripts/my-script.js

Response handler scripts are written in JavaScript ECMAScript 5.1, with coding assistance and documentation handled by the bundled HTTP Response Handler library. For in-place scripts, this functionality is enabled automatically. For external scripts, you need to enable it manually.

Enable HTTP Response Handler coding assistance in a JavaScript file

  1. Open the script file in the editor.

  2. In the context menu, choose Use JavaScript Library | HTTP Response Handler.

The HTTP Response Handler library exposes two objects to be used for composing response handler scripts:

  • client stores the session metadata, which can be modified inside the script. The client's state is preserved until you close DataGrip. Every variable saved in client.global as variable_name is accessible to subsequent HTTP requests as {{variable_name}}.

  • response holds information about the received response: its content type, status, response body, and so on.

Response handler scripts can include tests, which allows you to use the HTTP Client as a testing framework. To create a test, invoke the client.test(testName, function) method. Inside the test, you can assert a condition by invoking the client.assert(condition, message) method, for example:

GET https://httpbin.org/status/200 > {% client.test("Request executed successfully", function() { client.assert(response.status === 200, "Response status is not 200"); }); %}

Executing an HTTP request

  1. If you are going to test your own web service, make sure it is deployed and running.

  2. Do any of the following:

    • In the editor, click Run The Run button in the gutter next to the request you want to execute. In the pop-up menu, select Run <request name>.

    • In the editor, select Run <request name> from the request's context menu.

    • Place the caret at the request you want to execute, press Alt+Enter and select the Run <request name> intention action.

    When the request is executed, DataGrip automatically creates a dedicated temporary HTTP Request run/debug configuration for it. You can save it as a permanent run/debug configuration if necessary.

Working with HTTP Request Run/Debug Configurations

You can execute HTTP Requests by using run configurations of the HTTP Request type. This lets you execute a request at any point, add it to Run Dashboard, or a compound configuration.

Create an HTTP Request run/debug configuration

  1. Do any of the following:

    • In the editor, select Create <configuration name> from the context menu of the request you want to create a run/debug configuration for.

      Create a run configuration from the editor
    • Alternatively, choose Run | Edit Configurations from the main menu, then click Add icon and choose HTTP Request from the list.

  2. Provide the run/debug configuration parameters:

    • In the Environment list, select an environment that will define the set of environment variables used in the request.

    • In the File field, provide the path to the HTTP request file. You can type the path manually and use path completion (Ctrl+Space) as you type, or click Open from disk and select the required folder in the dialog that opens.

    • If your request file contains multiple requests, in the Request list choose the index of the request to execute.

When you execute an HTTP request from the editor, DataGrip automatically creates a temporary run/debug configuration with the request parameters. A temporary run/debug configuration works the same way as a permanent run/debug configuration. You can change its settings using the Run/Debug Configuration dialog and optionally save it as permanent.

Save a temporary HTTP Request run/debug configuration

  • Do any of the following:

    • In the Run/Debug Configuration selector, choose Save <configuration name>.

    • In the Run/Debug Configuration dialog, select the configuration and click Save button.

    • In the editor, select Save <configuration name> from the context menu of the executed request.

      Save a temporary run configuration

Execute a request using a run/debug configuration

  • Do any of the following:

    • In the Run/Debug Configuration selector, select the desired run configuration. Then click Run button on the main toolbar or press Shift+F10.

    • Press Shift+Alt+F10, select the desired run configuration from the pop-up menu, and press Enter.

      Run configuration popup

Viewing responses from web services

When you execute an HTTP request, DataGrip automatically saves the response into a separate file under the .idea/httpRequests/ directory. You can view the 50 most recently stored responses and navigate to the corresponding files using the requests history. If the request was executed from a scratch file, the link to its response output is also added below the original request:

response_results

View a received response

  1. Switch to the Run tool window, which opens automatically as soon as a response is received.

  2. By default, the server response is shown in the format specified in the request header via the content-type field. To have the response converted into another format, use the View as HTML The View as HTML button, View as XML The View as XML button, or View as JSON  The View as JSON button buttons.

  3. The results of the tests executed as part of a response handler script, if any, are displayed on the Tests tab of the Run tool window.

    The Tests tab of the Run tool window

Open a response file in the editor

  • Place the caret at the link to the response you want to open, and choose View | Jump to Source on the main menu, or press Ctrl+B or F4.

  • Ctrl+Click (for Windows and Linux) or ⌘+Click (for macOS) the response line:

    open_response

Compare responses in a scratch file

When a request is executed from a scratch file, the link to the response output file is added below the original request.

  • Do any of the following:

    • Place the caret at the link to the response file. Press Alt+Enter and select the Compare with <response name> intention action.

    • Click the ps_compare_responses_icon icon in the left gutter and select Compare with <response name> from the pop-up menu:

      compare_responses_menu

Compare responses in the requests history

When a request is executed from a physical file, the link to the response output is added to the requests history.

  1. Place the caret at the link to the response file. Choose View | Jump to Source on the main menu, or press Ctrl+B or F4 to open this file in a new editor tab.

  2. Choose View | Compare with... on the main menu, or press Ctrl+D. DataGrip will prompt you to open a response file from the httpRequests folder.

  3. Select the response file you would like to compare the current file with and click Open.

The two response files will be opened in the Differences viewer allowing you to compare their contents:

compare_responses_diff

Viewing requests history

DataGrip automatically saves the 50 recently executed requests into the http-requests-log .http file, which is stored on the project level under the .idea/httpRequests/ directory. Using the requests history, you can quickly navigate to a particular response as well as re-run any request. If a request is re-run from the requests history, its execution information and the link to the response output will be added to the top of the requests history file.

ps_requests_history

Open requests history

  • Click Show HTTP Requests History in the top-right corner of the editor or choose Tools | HTTP Client | Show HTTP Requests History on the main menu.

Configuring Proxy settings

  1. In the Settings/Preferences dialog (Ctrl+Alt+S), choose System Settings under Appearance & Behavior, then choose HTTP Proxy.

  2. In the Proxy dialog that opens, select Manual proxy configuration and specify the following:
    • Enter the proxy host name and port number in the Host name and Port number fields.

    • To enable authorization, select the Proxy authentication checkbox and type the user name and password in the corresponding fields.

Last modified: 28 November 2018