# OpenAPI

Source: https://openflow.run/zh-cn/docs/nodes/openapi/
Language: zh-CN
Product version: 0.1.0-beta.77

根据 API 文档中选定的操作，生成请求和响应端口。

API 提供了描述目标操作的 OpenAPI 文档时，可以使用 OpenAPI 节点。产品会根据文档解析端口和可选认证方式。

## 选择操作

```json
{
  "op": "node.add", "as": "status", "type": "openapi", "name": "Read service status",
  "config": {
    "sourceUrl": "https://api.example.com/openapi.json",
    "path": "/status",
    "method": "get"
  }
}
```

将示例文档地址替换为真实 API 文档，选择路径和方法，再检查生成的字段和可用认证方式。通过输入绑定该认证方式支持的凭据。

OpenAPI 根据选中的 GET /status 操作生成请求和结果端口。

**输入**
内嵌的示例 OpenAPI 文档声明了一份状态响应。

**预期结果**
选中操作通过生成的端口返回文档声明的响应。

**运行前准备**
使用真实 API 文档和接口，选择操作，并配置必要的认证。

[下载工作流](https://openflow.run/docs/examples/openapi-status.openflow.json)

## 生成的端口

选定操作定义参数、请求体结构和结果端口。具体名称应查看节点详情，不能沿用对其他 API 操作的假设。

节点会保存定义快照，普通局部编辑不会更新它。需要采用变更后的文档时，应明确刷新或重新选择操作。文档更新不应悄悄改动节点的无关配置。

## 认证

认证方式从解析出的选项中选择，并作为一个整体替换。按所选方式绑定支持的凭据。API 文档说明如何认证，并不授予 API 使用权限。

## 选择其他节点

接口没有 OpenAPI 文档时，可用 [HTTP 请求](https://openflow.run/zh-cn/docs/nodes/http-request/index.md)。目录已有对应应用操作，且需要托管账号授权时，可用[应用操作节点](https://openflow.run/zh-cn/docs/nodes/connector/index.md)。

OpenAPI 支持普通[重试和错误处理](https://openflow.run/zh-cn/docs/concepts/errors-and-retries/index.md)。重复请求可能重复远端操作。

## 资料来源

*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#openapi-documents-and-tasks)
*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
