Поделиться через


API прокси-сервера

Прокси-сервер разработки поставляется с веб-API, который позволяет программно взаимодействовать с прокси-сервером. API доступен на порту, указанном в параметрах прокси-сервера.

Swagger

API задокументирован с помощью Swagger. Вы можете получить доступ к пользовательскому интерфейсу Swagger, перейдя к http://localhost:<apiPort>/swagger браузеру.

Операции

В следующем списке показаны доступные операции API.

GET /proxy

Возвращает экземпляр ProxyInfo с информацией о текущем экземпляре прокси-сервера разработки.

Пример. Получение сведений о текущем экземпляре прокси-сервера разработки

Запрос:

GET http://localhost:8897/proxy

Ответ:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

POST /proxy

Управляет текущим экземпляром прокси-сервера разработки.

Пример: начало записи

Запрос:

POST http://localhost:8897/proxy
content-type: application/json

{
  "recording": true
}

Ответ:

200 OK

{
  "recording": true,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

Пример: остановка записи

Запрос:

POST http://localhost:8897/proxy
content-type: application/json

{
  "recording": false
}

Ответ:

200 OK

{
  "recording": false,
  "configFile": "/Users/user/dev-proxy/devproxyrc.json"
}

POST /proxy/jwtToken

Создает веб-токен JSON (JWT).

Запрос:

POST http://localhost:8897/proxy/jwtToken
Content-Type: application/json

{
  "name": "Dev Proxy",
  "audiences": [
    "https://myserver.com"
  ],
  "issuer": "dev-proxy",
  "roles": [
    "admin"
  ],
  "scopes": [
    "Post.Read",
    "Post.Write"
  ],
  "claims": {
    "claim1": "value",
    "claim2": "value"
  },
  "validFor": 60
}

Примечание.

Зарегистрированные утверждения (например, iss, subaudnbfexp, , iat) jtiавтоматически добавляются в маркер. Если в запросе указано любое из этих утверждений, API игнорирует предоставленные значения.

Ответ:

200 OK

{
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IkRldiBQcm94eSIsInN1YiI6IkRldiBQcm94eSIsImp0aSI6IjkyZjM5YzciLCJzY3AiOlsiUG9zdC5SZWFkIiwiUG9zdC5Xcml0ZSJdLCJyb2xlcyI6ImFkbWluIiwiY2xhaW0xIjoidmFsdWUiLCJjbGFpbTIiOiJ2YWx1ZSIsImF1ZCI6Imh0dHBzOi8vbXlzZXJ2ZXIuY29tIiwibmJmIjoxNzI3MTk4MjgyLCJleHAiOjE3MjcyMDE4ODIsImlhdCI6MTcyNzE5ODI4MiwiaXNzIjoiZGV2LXByb3h5In0.E_Gj9E58OrAh9uHgc-TW8DYfq8YHFrhaUTpKA4yXEIg"
}

POST /proxy/mockrequest

Вызывает макетный запрос. Эквивалент нажатия клавиши w в консоли, в которой запущен прокси-сервер разработки.

Запрос:

POST http://localhost:8897/proxy/mockrequest

Ответ:

202 Accepted

GET /proxy/rootCertificate?format=crt

Скачивает открытый ключ корневого сертификата в формате PEM (конфиденциальность расширенной почты), который прокси-сервер разработки использует для расшифровки HTTPS-запросов. Этот API полезен, если вы хотите доверять корневому сертификату на узле при запуске прокси-сервера разработки в контейнере Docker.

На данный момент единственным поддерживаемым форматом является crt. API возвращает ошибку 400 bad request, если указать любой другой формат или не указывать формат вообще.

Запрос:

GET http://localhost:8897/proxy/rootCertificate?format=crt

Ответ:

content-type: application/x-x509-ca-cert

-----BEGIN CERTIFICATE-----
[base64 encoded certificate]
-----END CERTIFICATE-----

POST /proxy/stopproxy

Корректно завершает работу прокси-сервера разработки.

Запрос:

POST http://localhost:8897/proxy/stopproxy

Ответ:

202 Accepted

Модели

ProxyInfo

Сведения о текущем экземпляре прокси-сервера разработки.

Свойство Type Описание
recording boolean Указывает, записывает ли прокси-сервер запросы
configFile string Путь к файлу конфигурации, используемому прокси-сервером разработки (только для чтения)

JwtOptions

Параметры создания токена JWT.

Свойство Type Описание
name string Имя пользователя, для создания маркера для
audience string[] Аудитории, для создания маркера для
issuer string[] Издатель маркера
roles string[] Утверждение роли для добавления в токен
scopes string[] Утверждение области для добавления в токен
claims KeyValuePair Утверждения для добавления в токен
validFor number Длительность (в минутах), для которой маркер действителен
signingKey string Ключ, используемый для подписи маркера. Должно быть не менее 32 символов длиной. Если не указано, используется случайный ключ.

JwtInfo

Сведения о токене JWT.

Свойство Type Описание
token string Токен JWT