代理 API

开发代理附带一个 Web API,可用于以编程方式与代理交互。 API 在 代理设置中指定的 IP 地址和端口上可用。

所有 API 操作都需要持有者令牌。 开发代理为每个正在运行的实例生成唯一令牌,并将其存储在仅可供启动实例的用户访问的文件中。 使用 devproxy status 或 devproxy api token. 获取令牌。 CI设置环境变量时,请使用devproxy api token,因为开发代理省略状态和启动输出中的令牌。

在标头中包含 Authorization 令牌:

Authorization: Bearer <token>

没有有效令牌返回 401 Unauthorized的请求。 浏览器请求还必须来自设置中列出的 apiAllowedOrigins 源。 其他源返回 403 Forbidden。

Operations

以下列表显示了可用的 API 操作。

GET /proxy

返回一个实例, ProxyInfo 其中包含有关当前正在运行的开发代理实例的信息。

示例:获取有关当前正在运行的开发代理实例的信息

请求:

GET http://localhost:8897/proxy
Authorization: Bearer <token>

响应:

200 OK

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

POST /proxy

控制当前正在运行的开发代理实例。

示例:开始录制

请求:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": true
}

响应:

200 OK

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

示例:停止录制

请求:

POST http://localhost:8897/proxy
Authorization: Bearer <token>
content-type: application/json

{
  "recording": false
}

响应:

200 OK

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

POST /proxy/jwtToken

生成 JSON Web 令牌(JWT)。

请求:

POST http://localhost:8897/proxy/jwtToken
Authorization: Bearer <token>
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、subaud、exp、nbf、iat)jti会自动添加到令牌中。 如果在请求中指定这些声明中的任何一个,API 将忽略你提供的值。

响应:

200 OK

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

GET /proxy/logs

返回开发代理日志输出。 等效于 logs 命令。 仅当开发代理在分离模式下运行时,此终结点才可用。 否则,API 返回 404 Not Found。

查询参数 描述 默认
lines 要从日志末尾返回的行数 50
follow 当 true,将新的日志行作为服务器发送的事件流式传输 false
since 仅返回自指定时间以来记录的行。 使用持续时间(例如,、30s5m、1h)1d或时间戳(例如) 2026-01-24T14:00:00 n/a

默认情况下,API 以纯文本形式返回日志行。 若要获取日志条目的 JSON 数组,请将 Accept 标头设置为 application/json。 若要将日志行作为服务器发送的事件流式传输,请将Accept标头text/event-stream设置为或设置为 truefollow 。

请求:

GET http://localhost:8897/proxy/logs?lines=10
Authorization: Bearer <token>

响应:

200 OK
content-type: text/plain

[last 10 lines of the Dev Proxy log]

POST /proxy/mockrequest

引发模拟请求。 等效于在运行开发代理的控制台中按 w 。

请求:

POST http://localhost:8897/proxy/mockrequest
Authorization: Bearer <token>

响应:

202 Accepted

GET /proxy/rootCertificate?format=crt

下载开发代理用于解密 HTTPS 请求的 PEM(隐私增强邮件)格式的根证书的公钥。 如果要在 Docker 容器中运行开发代理时信任主机上的根证书,此 API 非常有用。

目前,唯一支持的格式是 crt。 如果指定任何其他格式或根本不指定格式,API 将返回 400 错误请求错误。

请求:

GET http://localhost:8897/proxy/rootCertificate?format=crt
Authorization: Bearer <token>

响应:

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

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

POST /proxy/stopproxy

正常关闭开发代理。

请求:

POST http://localhost:8897/proxy/stopproxy
Authorization: Bearer <token>

响应:

202 Accepted

模型

ProxyInfo

有关当前正在运行的开发代理实例的信息。

properties 类型 描述
recording boolean 代理当前是否正在记录请求
configFile string 开发代理正在使用的配置文件的路径(只读)

JwtOptions

用于生成 JWT 令牌的选项。

properties 类型 描述
name string 要为其创建令牌的用户的名称
audiences string[] 要为其创建令牌的受众
issuer string 令牌的颁发者
roles string[] 要添加到令牌的角色声明
scopes string[] 要添加到令牌的范围声明
claims KeyValuePair 要添加到令牌的声明
validFor number 令牌有效的持续时间(以分钟为单位)
signingKey string 用于对令牌进行签名的密钥。 长度必须至少为 32 个字符。 如果未指定,请使用随机生成的密钥。

JwtInfo

有关 JWT 令牌的信息。

properties 类型 描述
token string JWT 令牌