# 生产环境测试（API 预运行）

Equinix Fabric 支持在生产环境中直接进行 **API 试运行** 功能。 Dry Run 功能允许您安全地模拟受支持的 API 调用，以验证请求负载、业务逻辑和资源可用性，**而无需**配置任何基础设施或产生费用。

在验证新集成、测试自动化更改或在“真正”执行之前确认复杂请求是否会成功时，请使用 Dry Run。

## 试运行是如何进行的[​](#试运行是如何进行的 "Direct link to 试运行是如何进行的")

通过在受支持的 API 请求中添加查询参数（例如 `dryRun=true`）来启用试运行。

如果存在 Dry Run 参数，Fabric 平台将仅执行**服务器端验证**，而不会完成完整的事务。具体来说，平台将：

* **验证输入** – 检查必填字段是否存在且格式正确，以及 Metros、IBX 代码、带宽和套餐类型等值是否有效。
* **验证业务逻辑** – 运行外部和内部检查，例如确认城域路由器、端口路由器或云路由器是否可用于请求的操作。
* **跳过持久化和配置** – 不创建数据库记录，不生成工作订单，也不预留、更新或删除任何物理或逻辑资源。

身份验证、授权和配额检查仍然以与实时通话相同的方式执行。

：：：：重要的 试运行不会绕过任何权限或帐户要求。如果您的生产环境调用因缺少权限或帐户状态无效而被拒绝，那么试运行调用也会被拒绝。 ::::

## 支持的资源和运营[​](#支持的资源和运营 "Direct link to 支持的资源和运营")

针对特定的 Fabric v4 资源和操作，可以使用 Dry Run 功能。

| **Domain / Resource** | **API Endpoint**           | **Supported Operations** |
| --------------------- | -------------------------- | ------------------------ |
| Cloud Routers         | `/fabric/v4/routers`       | Create                   |
| Connections           | `/fabric/v4/connections`   | Create, Update           |
| Networks              | `/fabric/v4/networks`      | Create                   |
| Ports                 | `/fabric/v4/ports`         | Create, Update, Delete   |
| Service Tokens        | `/fabric/v4/serviceTokens` | Create, Update           |

对于所有其他端点和操作，包含 `dryRun=true` 的调用行为与标准生产请求相同。

## 了解试运行响应[​](#了解试运行响应 "Direct link to 了解试运行响应")

Dry Run 返回的响应旨在与您在实际生产调用中看到的响应非常接近，但也有一些重要的不同之处。

### 验证成功[​](#验证成功 "Direct link to 验证成功")

如果请求通过所有验证检查，API 将返回 **`200 OK`**。

* **资源标识符** – 诸如 `uuid` 或 `href` 之类的字段可能为 `null` 或省略，因为在 Dry Run 期间实际上不会创建任何资源。
* **订单编号** – 不会生成采购订单编号或其他商业标识符。
* **副作用** – 不会进行任何资源配置、修改或删除。

您可以使用此响应来确认您的有效负载结构、值和请求的状态转换是否可接受，然后再提交不带 `dryRun=true` 的实时请求。

### 验证错误[​](#验证错误 "Direct link to 验证错误")

如果请求验证失败，API 将返回与实际生产调用相同的 **HTTP 状态代码和错误结构**（例如，对于无效输入，返回 `400 Bad Request`）。

典型的验证失败包括：

* **无效的位置数据** – 不支持或拼写错误的 Metro 或 IBX 代码。
* **不支持的资源状态转换** – 尝试修改或删除处于瞬态状态（例如“PROVISIONING”）的资源。
* **未满足的依赖关系** – 例如，尝试删除仍与活动虚拟连接或服务令牌关联的端口。

这些错误是在模拟运行期间返回的，不会对生产资源进行任何更改。

## 使用端口进行空运行[​](#使用端口进行空运行 "Direct link to 使用端口进行空运行")

`/fabric/v4/ports` 端点在与 Dry Run 一起使用时会公开丰富的验证行为。

### 创建端口[​](#创建端口 "Direct link to 创建端口")

提交端口的 Dry Run 创建请求时，请使用 `POST /fabric/v4/ports?dryRun=true` 操作：

* API 会验证请求的都会区、 IBX和其他位置属性。
* 检查包和接口属性（例如 `interfaceSpeed`、`bandwidth` 和 `encapsulation`）的兼容性和可用性。
* 未预留任何物理端口，也未创建任何订购。

：：：：笔记 公共 Fabric API 不支持批量创建端口。每次 Dry Run 创建请求都应描述单个端口。 ::::

### 更新端口[​](#更新端口 "Direct link to 更新端口")

使用 `PATCH /fabric/v4/ports/{uuid}?dryRun=true` 操作可以在应用端口配置更改之前安全地测试更改：

* 您可以验证端口的描述性属性（例如，`name`）或配置属性（例如，`encapsulation`）的更新。
* API 强制执行状态规则：尝试更新处于临时状态（例如 `PROVISIONING`）的端口将返回错误。大多数更新操作需要端口处于 `ACTIVE` 状态。
* 依赖关系规则也会被强制执行：例如，如果端口有现有连接或服务配置文件，则更改这些连接或配置文件会使它们失效，因此您不能更改“封装”。

在试运行期间，不会对端口进行任何更改；您只会收到验证结果和任何相关的错误消息。

### 删除端口[​](#删除端口 "Direct link to 删除端口")

使用 `DELETE /fabric/v4/ports/{uuid}?dryRun=true` 操作来验证删除请求是否会成功：

* API 会检查端口是否存在，以及端口是否处于允许删除的状态（通常为“ACTIVE”）。
* API 确保没有活动连接、服务令牌或其他依赖服务仍然绑定到端口。

如果检测到任何依赖关系，Dry Run 删除调用将返回与实时删除请求返回的相同错误，而不会删除或修改端口。

## 何时使用空运行[​](#何时使用空运行 "Direct link to 何时使用空运行")

在以下情况下可以考虑使用模拟运行：

* **在推出新的自动化功能之前** – 验证生成的 API 请求在结构上是否正确，并符合 Fabric 业务规则。
* **在生产环境中进行测试时** – 在执行操作之前，请确认真实账户数据（端口、连接、网络、云路由器和服务令牌）支持预期的操作。
* **故障排除** – 安全地重现失败场景，以了解哪个验证规则或依赖项阻止了更改。

在成功完成试运行并进行必要的调整后，您可以重新发送相同的请求，但这次不带 `dryRun=true` 参数，以执行实际操作。
