@bpinternal/opapi

中文文档
2.0.0发布于 2026/07/23MITTypeScriptESM + CJS构建来源已验证近 30 天下载 4217

Opapi是一个高度有意见的库,使用打字符从OpenAPI规格生成服务器,客户端和文件.

中文使用文档

奥帕皮 (OpenAPI)

Opapi是一个高度有意见的库,使用打字符从OpenAPI规格生成服务器,客户端和文件.

使用量

安装软件包并开始创建您的 OpenAPI 规格 。 参见以下例子:

import { OpenApi, schema } from '@bpinternal/opapi'
import { z } from 'zod'

const api = new OpenApi({
  metadata: {
    title: 'Example API', // This is the title of the API
    description: 'Description of this api', // This is the description of the API
    server: 'https://api.example.com', // This is the base URL of the API
    version: '0.1.0', // This is the version of the API
    prefix: 'v1', // This prefix will be added to all routes
  },
  // This is metadata to be used in the documentation
  section: {
    User: {
      title: 'User',
      description: 'User related endpoints',
    },
  },
  // This is where you define your schemas that will be used in the API
  // You can use the `ref` function to reference a schema
  schemas: {
    User: {
      section: 'User', // This is the section where this schema will be displayed in the documentation
      schema: schema(
        z.object({
          id: z.string(),
          name: z.string(),
        }),
        {
          description: 'User schema',
        },
      ),
    },
  },
  // This is the error definitions that will be used in the API
  errors: [
    {
      status: 403,
      type: 'Forbidden',
      description: "The requested action can't be perform by this resource.",
    },
    {
      status: 400,
      type: 'InvalidPayload',
      description: "The request payload isn't invalid.",
    },
    {
      status: 405,
      type: 'MethodNotFound',
      description: 'The requested method does not exist.',
    },
  ],
})

api.addOperation({
  name: 'listUsers',
  description: 'List all users',
  method: 'get',
  path: '/users',
  section: 'User',
  parameters: {
    name: {
      in: 'query',
      type: 'string',
      description: 'Name filter for the users',
    },
  },
  response: {
    description: 'Returns a list of User objects.',
    schema: z.object({
      users: openapi.getModelRef('User'),
    }),
  },
})

api.exportServer('./gen/server') // This will generate a server that can be used with any framework
api.exportClient('./gen/client') // This will generate a client that can be used to query the API

免责声明

此软件包将在 @bpinternal 组织。 这个组织的所有软件包都用于 瓶装 内部的团队 并不适合我们的社区。 由于这些软件包适合我们自己的使用情况,它们可能不稳定的API,在没有警告的情况下接受中断的更改,文件很少,缺乏以社区为重点的支持。 然而,这些软件包仍然被故意公开,其重要原因如下: 我们爱开源. 因此,如果您想要安装或叉子,这个软件包完全可以自由操作。 我们强烈建议你正确标记你的版本.

博讯工程组.

版本与发布记录

@bpinternal/opapi 共发布 87 个版本,首次发布于 2023/04/07;过去 12 个月发布了 2 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
2.0.0latest2026/07/233 个月前
1.0.02025/11/1111 个月前
0.18.02025/11/081 年前
0.17.12025/11/071 年前
0.17.02025/11/061 年前
0.16.12025/10/301 年前

关于 @bpinternal/opapi 的常见问题

@bpinternal/opapi 是什么?

Opapi是一个高度有意见的库,使用打字符从OpenAPI规格生成服务器,客户端和文件.

如何安装 @bpinternal/opapi?

在项目目录运行 npm install @bpinternal/opapi,或使用 pnpm add / yarn add / bun add。

@bpinternal/opapi 支持 TypeScript 吗?

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

@bpinternal/opapi 支持 ESM 还是 CommonJS?

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

@bpinternal/opapi 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=16.0.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@bpinternal/opapi 可以商用吗?

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

@bpinternal/opapi 的下载量有多少?

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

@bpinternal/opapi 还在维护吗?

最新版本 2.0.0 发布于 2026/07/23(3 个月前);至今共发布 87 个版本,其中过去 12 个月发布了 2 个;首次发布于 2023/04/07。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。