Работа с HTTP Client в PhpStorm: выполнение POST-запросов с параметрами и другие возможности

PhpStorm предоставляет встроенный инструмент HTTP Client, который позволяет тестировать запросы прямо в IDE без необходимости использования сторонних инструментов вроде Postman. С помощью HTTP Client можно выполнять различные HTTP-запросы, включая POST с параметрами, GET, а также запросы с авторизацией. В этой статье рассмотрим, как пользоваться HTTP Client в PhpStorm, и приведем примеры на реальных API.

Создание HTTP-запросов в PhpStorm

Для работы с HTTP-запросами в PhpStorm создайте файл с расширением .http или .rest. В этом файле можно записывать запросы и просматривать ответы на них. Этот подход удобен, если вы работаете над API-проектом и вам нужно регулярно тестировать запросы.

 

Выполнение GET-запросов

GET-запросы используются для получения данных с сервера. Рассмотрим простой пример GET-запроса к открытым данным. В данном случае используем API JSONPlaceholder, который не требует авторизации.

GET https://jsonplaceholder.typicode.com/posts

Вставьте этот код в файл .http и выполните запрос, нажав на кнопку с зелёными треугольниками над областью редактирования файла, либо слева от введённой строки, которая появится рядом с запросом.

Вы увидите JSON-ответ с данными, предоставленными API на вкладке Services. Эта вкладка по умолчанию открывается в нижней части экрана.

Выполнение POST-запросов с параметрами

POST-запросы используются для отправки данных на сервер. Рассмотрим, как отправить JSON-данные в теле запроса. В качестве примера снова используем JSONPlaceholder, который принимает POST-запросы без авторизации.

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "foo",
  "body": "bar",
  "userId": 1
}

В этом примере мы отправляем JSON-объект с полями title, body и userId. Content-Type указывает, что данные в теле запроса представлены в формате JSON.

Ожидаемый ответ:

{
  "title": "foo",
  "body": "bar",
  "userId": 1,
  "id": 101
}

Ответ содержит отправленные данные с добавленным полем id, которое присваивается сервером.

POST-запрос с параметрами form-data

Кроме JSON, вы можете отправлять параметры как form-data, часто используемое для передачи данных в формате application/x-www-form-urlencoded. Пример ниже демонстрирует отправку данных в этом формате:

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/x-www-form-urlencoded

title=foo&body=bar&userId=1

Это подходит для API, которые принимают данные в формате form-data. В отличие от JSON, параметры передаются через символ &, как в URL-запросах.

Ответ должен быть аналогичен предыдущему примеру, с добавленным полем id.

Пример запроса с авторизацией

Для запросов, требующих авторизации, добавим заголовок Authorization. Рассмотрим открытое API, такое как HTTPBin, которое предоставляет эндпоинты для тестирования запросов с базовой авторизацией. HTTPBin принимает любые данные в качестве логина и пароля.

GET https://httpbin.org/basic-auth/user/pass
Authorization: Basic dXNlcjpwYXNz

В данном примере используется базовая авторизация. Строка dXNlcjpwYXNz — это закодированные креденшелы “user:pass” в формате Base64. Вы можете заменить их на свои или использовать онлайн-конвертер для других пар "логин:пароль".

Ожидаемый ответ:

{
  "authenticated": true,
  "user": "user"
}

Ответ подтверждает успешную аутентификацию и возвращает имя пользователя.

Дополнительные функции HTTP Client

HTTP Client в PhpStorm поддерживает ряд полезных возможностей для работы с запросами:

  • Параметры окружения — можно задавать переменные окружения для запросов, такие как базовый URL, токены и пр.
  • Группировка запросов — в одном файле можно хранить несколько запросов и выполнять их поочередно.
  • Поддержка разных форматов данных — JSON, XML, HTML, что позволяет работать с любыми форматами ответа.

Параметры окружения в HTTP Client PhpStorm

Параметры окружения — это удобный способ задавать значения для переменных, которые могут изменяться в зависимости от среды. Например, можно использовать разные базовые URL для локальной разработки, тестового и продакшн-сред. В PhpStorm параметры окружения определяются в отдельном файле с расширением .env.json, который обычно располагается рядом с HTTP-запросами.

Чтобы создать параметры окружения, выполните следующие шаги:

  • Создайте файл с именем, например, http-client.env.json в корне вашего проекта или в том же каталоге, где находятся HTTP-запросы.
  • Добавьте в этот файл JSON-объекты, представляющие разные окружения (например, local, test, production).

Пример содержимого http-client.env.json:

{
  "local": {
    "base_url": "http://localhost:3000",
    "api_key": "local_key"
  },
  "production": {
    "base_url": "https://api.example.com",
    "api_key": "prod_key"
  }
}

Теперь вы можете использовать переменные окружения в HTTP-запросах, подставляя их с помощью синтаксиса . Например:

GET /endpoint
Authorization: Bearer 

Чтобы выбрать конкретное окружение, нажмите на селектор справа от "Run with:" на панели инструментов , и PhpStorm подставит соответствующие значения в ваш запрос.

Это позволяет легко переключаться между различными конфигурациями, например, для локальной отладки и тестирования в продакшн-среде.

Поддержка разных форматов данных

HTTP Client в PhpStorm поддерживает несколько форматов данных, включая JSON, XML и HTML. Это позволяет легко тестировать API и другие сервисы с разнообразными форматами данных.

Работа с JSON-данными

JSON — наиболее часто используемый формат для обмена данными между клиентом и сервером. HTTP Client автоматически распознает JSON-ответы и отображает их в удобочитаемом формате. Пример запроса с JSON:

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/json

{
  "title": "example",
  "body": "This is a JSON test",
  "userId": 1
}

Работа с XML-данными

HTTP Client также поддерживает XML-формат, который используется в некоторых API. Чтобы отправить XML-запрос, укажите Content-Type: application/xml и вставьте XML в теле запроса:

POST https://jsonplaceholder.typicode.com/posts
Content-Type: application/xml

<request>
    <title>example</title>
    <body>This is an XML test</body>
    <userId>1</userId>
</request>

PhpStorm также может распознать XML в ответе и представить его в структурированном виде, что упрощает чтение и анализ.

Работа с HTML-ответами

Некоторые API или веб-сервисы могут возвращать HTML-контент. Для просмотра HTML-ответов выполните простой GET-запрос, например:

GET https://example.com

По умолчанию HTML-ответы отображаются в HTTP Client как и json в отформатированном виде виде, однако при необходимости можно сделать его рендер нажав на кнопку Preview на правой вертиклаьной панели инструментов вкладки с ответом: 

Если вы хотите как можно больше узнать о возможностях PhpStorm вам может быть интересна статья о кастомизации генерируемых фрагментов кода, таких как геттеры и сеттеры.