Работа с 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 вам может быть интересна статья о кастомизации генерируемых фрагментов кода, таких как геттеры и сеттеры.