# @devlikeapro/n8n-openapi-node 中文文档

规范地址：https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/

版本：0\.1\.4
npm 元数据更新时间：2025-02-24T05:55:59.725Z
中文译文更新时间：2026-11-12T03:33:16.936Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40devlikeapro/n8n-openapi-node
原文对照：https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/?lang=original
项目主页：https://github.com/devlikeapro/n8n-openapi-node#readme
源码仓库：https://github.com/devlikeapro/n8n-openapi-node

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：151 kB，46 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：4 个
- 首次发布：2024-09-22T05:39:43.267Z
- 最新版本发布：2025-02-24T05:55:59.348Z
- 近 30 天下载量：359099（2026-10-12 至 2026-11-10，npm 官方下载统计）
- 已发布版本数：5（近 12 个月 0 个）

## 中文简介

将 OpenAPI 规格转换为 n8n 节点

## 安装

```sh
npm install @devlikeapro/n8n-openapi-node
```

也可以使用：`pnpm add @devlikeapro/n8n-openapi-node`、`yarn add @devlikeapro/n8n-openapi-node`、`bun add @devlikeapro/n8n-openapi-node`

## README

# @devlikiapro/n8n-openapi-节点

![openapi logo](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/openapi.png) ![n8n logo](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/n8n.png)

转身 **打开API** (单位:千美元)**斯瓦格语Name**显示为 a **n8n 节点**来啊!

[![npm version](https://img.shields.io/npm/v/@devlikeapro/n8n-openapi-node.svg)](https://www.npmjs.com/package/@devlikeapro/n8n-openapi-node)

* * *

-   [快速启动](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-quick-start)
    -   [安装](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-installation)
    -   [使用量](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-usage)
-   [如何运作](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-how-it-works)
    -   [资源](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-resource)
    -   [运行](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-operation)
    -   [查询参数](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-query-parameters)
    -   [请求正文](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-request-body)
    -   [页眉](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-headers)
-   [自定义](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-customization)
    -   [资源](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-resource-1)
    -   [运行](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-operation-1)
    -   [字段](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-fields)
-   [使用大小写](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-use-cases)
-   [财务问题](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-faq)
    -   [我只有OpenAPI v2 spec, 我能做什么?](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-i-have-only-openapi-v2-spec-what-can-i-do)
    -   [我有Openapi.yaml spec, 我能做什么?](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-i-have-openapiyaml-spec-what-can-i-do)
    -   [如何从 OpenAPI v3 spec 设置证书 ?](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-how-to-set-up-credentials-from-openapi-v3-spec)
    -   [为什么不用我的OpenAPI光谱?](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-why-it-doesnt-work-with-my-openapi-spec)

# 快速启动

如果您有 OpenAPI 规格 - 您可以在几分钟内轻松创建 [您的社区节点](https://docs.n8n.io/integrations/community-nodes/usage/) 为n8n!

还需要创作和出版 `n8n-nodes-<yourproject>` npm 软件包, 但是您可以使用这个软件包生成大部分代码.

我们建议使用回购 `n8n-nodes-<yourproject>` 软件包 :

-   [https://github.com/devlikeapro/n8n-nodes-petstore 互联网档案馆的存檔,存档日期2014-10-02](https://github.com/devlikeapro/n8n-nodes-petstore) - 由 OpenAPI v3 spec生成的 pestore 示例
-   [https://github.com/n8n-io/n8n-nodes-starter (中文(简体) )](https://github.com/n8n-io/n8n-nodes-starter) - 正式n8n节点启动模板

查找更多真实世界的实例 [使用大小写](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-use-cases) 节.

![example](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/node.png)

## 安装

添加 `@devlikeapro/n8n-openapi-node` 作为依赖关系

```bash
npm install @devlikeapro/n8n-openapi-node
# OR
pnpm add @devlikeapro/n8n-openapi-node
# OR
yarn add @devlikeapro/n8n-openapi-node
```

## 使用量

1.  添加您的内容 `openapi.json` 改为 `src/{NodeName}` 文件夹 (使用时 **打开API v3** 财务报告和审定财务报表 **乔森**,参见 [财务问题](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/#readme-faq) 如果你没有的话
    
2.  让你的 `Node.properties` 从 OpenAPI v3 光谱 :
    

```typescript
import {INodeType, INodeTypeDescription, NodeConnectionType} from 'n8n-workflow';
import {N8NPropertiesBuilder, N8NPropertiesBuilderConfig} from '@devlikeapro/n8n-openapi-node';
import * as doc from './openapi.json'; // <=== Your OpenAPI v3 spec

const config: N8NPropertiesBuilderConfig = {}
const parser = new N8NPropertiesBuilder(doc, config);
const properties = parser.build()

export class Petstore implements INodeType {
  description: INodeTypeDescription = {
    displayName: 'Petstore',
    name: 'petstore',
    icon: 'file:petstore.svg',
    group: ['transform'],
    version: 1,
    subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
    description: 'Interact with Petstore API',
    defaults: {
      name: 'Petstore',
    },
    inputs: [NodeConnectionType.Main],
    outputs: [NodeConnectionType.Main],
    credentials: [
      {
        name: 'petstoreApi',
        required: false,
      },
    ],
    requestDefaults: {
      headers: {
        Accept: 'application/json',
        'Content-Type': 'application/json',
      },
      baseURL: '={{$credentials.url}}',
    },
    properties: properties, // <==== HERE
  };
}
```

# 如何运作

`N8NPropertiesBuilder` 从 OpenAPI v3 提取到您的 n8n 社区节点的少数实体 :

1.  **资源** - 名单 **标记** 从 OpenAPI 光谱
2.  **运行** - 名单 **业务** 从 OpenAPI 光谱( aka) **行动** 单位:n8n)
3.  **查询参数** - 名单 `operation.parameters` 从 OpenAPI 光谱
4.  **请求正文** - 名单 `operation.requestBody.content` 从 OpenAPI 光谱(仅用于 `application/json`(中文(简体) )
5.  **页眉** - 名单 `operation.parameters` 从 OpenAPI 光谱

## 资源

默认,它得到 **标记** 从 OpenAPI 光谱转换到 **资源** 以n8n计.

## 运行

默认,它得到 **业务** 从 OpenAPI 光谱转换到 **行动** 以n8n计.

## 查询参数

它会得到 `operation.parameters` 从 OpenAPI 光谱转换到 **查询参数** 以n8n计.

## 请求正文

它不创造请求正体的全部结构,只有一级属性. 所以,如果你有 请求身体作为

```json
{
  "name": "string",
  "config": {
    "id": 0,
    "name": "string"
  }
}
```

它在 n8n 中创建了两个字段:

-   `name` - 有默认值 `string`
-   `config` - 有默认值 `{"id": 0, "name": "string"}`

## 页眉

它会得到 `operation.parameters` 从 OpenAPI 光谱转换到 **页眉** 以n8n计.

# 自定义

## 资源

你可以推翻如何提取的方法 **资源** 从 **OpenAPI 标记** 定义您的自定义 `IResourceParser`数字 :

```typescript
import {IResourceParser} from '@devlikeapro/n8n-openapi-node';

export class CustomResourceParser {
  CUSTOM_DESCRIPTION = {
    "cats": "Cats are cute",
  }

  name(tag: OpenAPIV3.TagObject): string {
    // Your custom logic here
    if (tag['X-Visible-Name']) {
      return tag['X-Visible-Name'];
    }
    return lodash.startCase(tag.name);
  }

  value(tag: Pick<OpenAPIV3.TagObject, "name">): string {
    // Remove all non-alphanumeric characters
    const name = tag.name.replace(/[^a-zA-Z0-9_-]/g, '')
    return lodash.startCase(name)
  }

  description(tag: OpenAPIV3.TagObject): string {
    // Your custom logic here
    return this.CUSTOM_DESCRIPTION[tag.name] || tag.description || '';
  }
}
```

或者,你可以使用 `DefaultResourceParser` 并且只覆盖你需要的方法. 您可以在其中找到默认执行 [src/资源配置软件](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/src/ResourceParser.ts)

```typescript
import {OpenAPIV3} from 'openapi-types';
import * as lodash from 'lodash';
import {DefaultResourceParser} from '@devlikeapro/n8n-openapi-node';

export class CustomResourceParser extends DefaultResourceParser {
  value(tag: OpenAPIV3.TagObject): string {
    return lodash.startCase(tag.name.replace(/[^a-zA-Z0-9_-]/g, ''));
  }
}
```

然后用进去 `N8NPropertiesBuilder` 内 `config.resource`数字 :

```typescript
import {N8NPropertiesBuilder, N8NPropertiesBuilderConfig} from '@devlikeapro/n8n-openapi-node';
import * as doc from './openapi.json';

import {CustomResourceParser} from './CustomResourceParser';

const config: N8NPropertiesBuilderConfig = {
  resource: new CustomResourceParser()
}
const parser = new N8NPropertiesBuilder(doc, config);
const properties = parser.build()
```

查找真实的例子 [@devlikiapro/n8n-nodes-waha (英语)](https://github.com/devlikeapro/n8n-nodes-waha) 仓库.

## 运行

你可以推翻如何提取的方法 **运行** 从 **OpenAPI 操作** 定义您的自定义 `IOperationParser`数字 :

```typescript
import {IOperationParser} from '@devlikeapro/n8n-openapi-node';

export class CustomOperationParser implements IOperationParser {
  shouldSkip(operation: OpenAPIV3.OperationObject, context: OperationContext): boolean {
    // By default it skips operation.deprecated
    // But we can include all operations
    return false
  }

  name(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
    if (operation['X-Visible-Name']) {
      return operation['X-Visible-Name'];
    }
    return lodash.startCase(operation.operationId)
  }

  value(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
    return lodash.startCase(operation.operationId)
  }

  action(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
    // How operation is displayed in n8n when you select your node (right form)
    return operation.summary || this.name(operation, context)
  }

  description(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
    return operation.description || operation.summary || '';
  }
}
```

或者,你可以使用 `DefaultOperationParser` 并且只覆盖你需要的方法. 您可以在其中找到默认执行 [src/ 操作程序](https://npmcn.com/package/%40devlikeapro/n8n-openapi-node/src/OperationParser.ts)

```typescript
import {DefaultOperationParser} from '@devlikeapro/n8n-openapi-node';

export class CustomOperationParser extends DefaultOperationParser {
  name(operation: OpenAPIV3.OperationObject, context: OperationContext): string {
    // NestJS add operationId in format CatController_findOne
    let operationId: string = operation.operationId!!.split('_').slice(1).join('_');
    if (!operationId) {
      operationId = operation.operationId as string;
    }
    return lodash.startCase(operationId);
  }
}
```

然后用进去 `N8NPropertiesBuilder` 内 `config.operation`数字 :

```typescript
import {N8NPropertiesBuilder, N8NPropertiesBuilderConfig} from '@devlikeapro/n8n-openapi-node';
import * as doc from './openapi.json';
import {CustomOperationParser} from './CustomOperationParser';

const config: N8NPropertiesBuilderConfig = {
  operation: new CustomOperationParser()
}
const parser = new N8NPropertiesBuilder(doc, config);
const properties = parser.build()
```

查找真实的例子 [@devlikiapro/n8n-nodes-waha (英语)](https://github.com/devlikeapro/n8n-nodes-waha) 仓库.

## 字段

您可以在字段末尾覆盖一些值, 当完全 `properties` 准备好了.

举个例子,你怎样可以覆盖 `session` 字段值( 该字段有 `'default'` 字符串默认值)到更多 n8n 合适的 `=${$json.session}}`数字 :

```typescript
import {Override} from '@devlikeapro/n8n-openapi-node';

export const customDefaults: Override[] = [
  {
    // Find field by fields matching
    find: {
      name: 'session',
      required: true,
      type: 'string',
    },
    // Replace 'default' field value
    replace: {
      default: '={{ $json.session }}',
    },
  },
];
```

然后用进去 `N8NPropertiesBuilder`数字 :

```typescript

import {N8NPropertiesBuilder, N8NPropertiesBuilderConfig} from '@devlikeapro/n8n-openapi-node';
import * as doc from './openapi.json';
import {customDefaults} from './customDefaults';

const parser = new N8NPropertiesBuilder(doc);
const properties = parser.build(customDefaults);
```

查找真实的例子 [@devlikiapro/n8n-nodes-waha (英语)](https://github.com/devlikeapro/n8n-nodes-waha) 仓库.

# 使用大小写

以下是由 OpenAPI 规格生成的 n8n 社区节点, 您可以用来参考 :

-   [@devlikiapro/n8n-nodes-petstore (英语)](https://github.com/devlikeapro/n8n-nodes-petstore) - Petstore 实例生成自 [Petstore openapi.json (英语)](https://github.com/OAI/OpenAPI-Specification/blob/main/examples/v3.0/petstore.yaml)
-   [@devlikeapro/n8n-nodes-chatwoot (英语)](https://github.com/devlikeapro/n8n-nodes-chatwoot) - ChatWoot n8n社区节点 从 [https://www.chatwoot.com/developers/api/ 互联网档案馆的存檔,存档日期2013-12-02](https://www.chatwoot.com/developers/api/)也界定全权证书 手动)
-   [@devlikiapro/n8n-nodes-waha (英语)](https://github.com/devlikeapro/n8n-nodes-waha) - 说吧 **瓦哈岛** - 自办 **怎样的 HTTP API 密码** 你可以点击运行!

# 财务问题

## 我只有OpenAPI v2 spec, 我能做什么?

粘贴您的 OpenAPI 2. 0 定义 [https://editor.swagger.io (英语)](https://editor.swagger.io/) 选择 **编辑 > 转换为 OpenAPI 3** 从 菜单.

[https://stackoverflow.com/a/59749691 (英语)](https://stackoverflow.com/a/59749691)

## 我有Openapi.yaml spec, 我能做什么?

粘贴您的相片 [https://editor.swagger.io (英语)](https://editor.swagger.io/) 选择 **文件 > 保存为 JSON** 从菜单.

## 如何从 OpenAPI v3 spec 设置证书 ?

现在你需要手动定义它. 检查 [聊天Woot 节点](https://github.com/devlikeapro/n8n-nodes-chatwoot) 举个例子.

## 为什么不用我的OpenAPI光谱?

打开 [有新问题](https://github.com/devlikeapro/n8n-openapi-node/issues) 请附上 您的 openapi.json 文件并描述问题( 日志也有帮助 ).

## 常见问题

### @devlikeapro/n8n-openapi-node 是什么？

将 OpenAPI 规格转换为 n8n 节点

### 如何安装 @devlikeapro/n8n-openapi-node？

在项目目录运行 npm install @devlikeapro/n8n-openapi-node，或使用 pnpm add / yarn add / bun add。

### @devlikeapro/n8n-openapi-node 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @devlikeapro/n8n-openapi-node 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @devlikeapro/n8n-openapi-node 可以商用吗？

@devlikeapro/n8n-openapi-node 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @devlikeapro/n8n-openapi-node 的下载量有多少？

根据 npm 官方下载统计，@devlikeapro/n8n-openapi-node 在 2026/10/12 – 2026/11/10 这 30 天内被下载 359,099 次，日均约 11,970 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @devlikeapro/n8n-openapi-node 还在维护吗？

最新版本 0\.1\.4 发布于 2025/02/24（1\.7 年前）；至今共发布 5 个版本，其中过去 12 个月发布了 0 个；首次发布于 2024/09/22。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

