Перейти к основному содержимому

APIRequestContext

Этот API используется для тестирования Web API. Вы можете использовать его для вызова конечных точек API, настройки микросервисов, подготовки окружения или сервиса для вашего e2e теста.

Каждый контекст браузера Playwright имеет связанный с ним экземпляр APIRequestContext, который разделяет хранилище cookies с контекстом браузера и может быть доступен через BrowserContext.request() или Page.request(). Также возможно создать новый экземпляр APIRequestContext вручную, вызвав APIRequest.newContext().

Управление cookies

APIRequestContext, возвращаемый BrowserContext.request() и Page.request(), разделяет хранилище cookies с соответствующим BrowserContext. Каждый API запрос будет иметь заголовок Cookie, заполненный значениями из контекста браузера. Если ответ API содержит заголовок Set-Cookie, он автоматически обновит cookies BrowserContext, и запросы, сделанные со страницы, их подхватят. Это означает, что если вы войдете в систему с помощью этого API, ваш e2e тест будет авторизован, и наоборот.

Если вы хотите, чтобы API запросы не влияли на cookies браузера, вы должны создать новый APIRequestContext, вызвав APIRequest.newContext(). Такой объект APIRequestContext будет иметь собственное изолированное хранилище cookies.


Методы

delete

Добавлено в: v1.16 apiRequestContext.delete

Отправляет HTTP(S) запрос DELETE и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

APIRequestContext.delete(url);
APIRequestContext.delete(url, options);

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


dispose

Добавлено в: v1.16 apiRequestContext.dispose

Все ответы, возвращаемые APIRequestContext.get() и аналогичными методами, хранятся в памяти, чтобы вы могли позже вызвать APIResponse.body(). Этот метод освобождает все свои ресурсы, вызов любого метода на освобожденном APIRequestContext вызовет исключение.

Использование

APIRequestContext.dispose();
APIRequestContext.dispose(options);

Аргументы

  • options ApiRequestContext.DisposeOptions (опционально)
    • setReason String (опционально) Добавлено в: v1.45#

      Причина, которая будет сообщена операциям, прерванным освобождением контекста.

Возвращает


fetch

Добавлено в: v1.16 apiRequestContext.fetch

Отправляет HTTP(S) запрос и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

JSON объекты могут быть переданы напрямую в запрос:

Map<String, Object> data = new HashMap();
data.put("title", "Book Title");
data.put("body", "John Doe");
request.fetch("https://example.com/api/createBook", RequestOptions.create().setMethod("post").setData(data));

Обычный способ отправки файла(ов) в теле запроса - загрузить их как поля формы с кодировкой multipart/form-data, указав параметр multipart:

// Передайте путь к файлу в конструктор данных формы:
Path file = Paths.get("team.csv");
APIResponse response = request.fetch("https://example.com/api/uploadTeamList",
RequestOptions.create().setMethod("post").setMultipart(
FormData.create().set("fileField", file)));

// Или вы можете передать содержимое файла напрямую как объект FilePayload:
FilePayload filePayload = new FilePayload("f.js", "text/javascript",
"console.log(2022);".getBytes(StandardCharsets.UTF_8));
APIResponse response = request.fetch("https://example.com/api/uploadScript",
RequestOptions.create().setMethod("post").setMultipart(
FormData.create().set("fileField", filePayload)));

Аргументы

  • urlOrRequest String | Request#

    Целевой URL или запрос для получения всех параметров.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


get

Добавлено в: v1.16 apiRequestContext.get

Отправляет HTTP(S) запрос GET и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

Параметры запроса могут быть настроены с помощью опции params, они будут сериализованы в параметры поиска URL:

request.get("https://example.com/api/getText", RequestOptions.create()
.setQueryParam("isbn", "1234")
.setQueryParam("page", 23));

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


head

Добавлено в: v1.16 apiRequestContext.head

Отправляет HTTP(S) запрос HEAD и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

APIRequestContext.head(url);
APIRequestContext.head(url, options);

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


patch

Добавлено в: v1.16 apiRequestContext.patch

Отправляет HTTP(S) запрос PATCH и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

APIRequestContext.patch(url);
APIRequestContext.patch(url, options);

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


post

Добавлено в: v1.16 apiRequestContext.post

Отправляет HTTP(S) запрос POST и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

JSON объекты могут быть переданы напрямую в запрос:

Map<String, Object> data = new HashMap();
data.put("title", "Book Title");
data.put("body", "John Doe");
request.post("https://example.com/api/createBook", RequestOptions.create().setData(data));

Чтобы отправить данные формы на сервер, используйте опцию form. Ее значение будет закодировано в теле запроса с кодировкой application/x-www-form-urlencoded (см. ниже, как использовать кодировку формы multipart/form-data для отправки файлов):

request.post("https://example.com/api/findBook", RequestOptions.create().setForm(
FormData.create().set("title", "Book Title").set("body", "John Doe")
));

Обычный способ отправки файла(ов) в теле запроса - загрузить их как поля формы с кодировкой multipart/form-data. Используйте FormData для создания тела запроса и передайте его в запрос как параметр multipart:

// Передайте путь к файлу в конструктор данных формы:
Path file = Paths.get("team.csv");
APIResponse response = request.post("https://example.com/api/uploadTeamList",
RequestOptions.create().setMultipart(
FormData.create().set("fileField", file)));

// Или вы можете передать содержимое файла напрямую как объект FilePayload:
FilePayload filePayload1 = new FilePayload("f1.js", "text/javascript",
"console.log(2022);".getBytes(StandardCharsets.UTF_8));
APIResponse response = request.post("https://example.com/api/uploadScript",
RequestOptions.create().setMultipart(
FormData.create().set("fileField", filePayload)));

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


put

Добавлено в: v1.16 apiRequestContext.put

Отправляет HTTP(S) запрос PUT и возвращает его ответ. Метод заполнит cookies запроса из контекста и обновит cookies контекста из ответа. Метод автоматически следует за перенаправлениями.

Использование

APIRequestContext.put(url);
APIRequestContext.put(url, options);

Аргументы

  • url String#

    Целевой URL.

  • options RequestOptions (опционально) Добавлено в: v1.18#

    Опциональные параметры запроса.

Возвращает


storageState

Добавлено в: v1.16 apiRequestContext.storageState

Возвращает состояние хранилища для этого контекста запроса, содержит текущие cookies и снимок локального хранилища, если он был передан в конструктор.

Использование

APIRequestContext.storageState();
APIRequestContext.storageState(options);

Аргументы

  • options ApiRequestContext.StorageStateOptions (опционально)
    • setIndexedDB boolean (опционально) Добавлено в: v1.51#

      Установите в true, чтобы включить IndexedDB в снимок состояния хранилища.

    • setPath Path (опционально)#

      Путь к файлу для сохранения состояния хранилища. Если setPath является относительным путем, то он разрешается относительно текущей рабочей директории. Если путь не указан, состояние хранилища все равно возвращается, но не будет сохранено на диск.

Возвращает