1.1.32 • Published 8 months ago

@braken/http-swagger v1.1.32

Weekly downloads
-
License
MIT
Repository
-
Last release
8 months ago

@braken/http-swagger

Braken 框架的 HTTP Swagger 插件,提供 OpenAPI/Swagger 文档生成支持。

安装

pnpm add @braken/http-swagger

特性

  • OpenAPI/Swagger 文档生成
  • 装饰器驱动的 API 文档
  • 自动参数类型推导
  • 支持多种参数类型
  • JSON Schema 集成
  • 自动定义加载

使用示例

import { Controller } from '@braken/http';
import Swagger from '@braken/http-swagger';
import { t } from '@braken/json-schema';

// 创建 Swagger 实例
const swagger = new Swagger({
  users: '用户管理',
  orders: '订单管理'
});

// 定义响应类型
const UserSchema = t.Object({
  id: t.Number(),
  name: t.String(),
  email: t.String()
});

// 定义控制器
@swagger.Controller('用户管理', '用户相关的 API 接口', 'users')
@swagger.ContentType('application/json')
@swagger.ResponseType('application/json')
class UserController extends Controller {
  @swagger.Parameter('id', 'path', t.Number())
  @swagger.Response(200, UserSchema)
  async getUser(ctx) {
    // ...
  }

  @swagger.Parameter('user', 'body', UserSchema)
  @swagger.Response(201, UserSchema)
  async createUser(ctx) {
    // ...
  }
}

// 生成文档
const docs = swagger.toJSON();

API

Swagger 类

主要的 Swagger 文档生成类,提供以下功能:

  • 参数定义
  • 响应类型定义
  • 控制器文档
  • 自动定义加载
  • 文档生成

装饰器

@Parameter

定义 API 参数:

@swagger.Parameter(name: string, inwhere: SwaggerParameterInWhere, value: JSONSchemaObject)

@ContentType

定义请求内容类型:

@swagger.ContentType(...types: string[])

@ResponseType

定义响应内容类型:

@swagger.ResponseType(...types: string[])

@Response

定义响应结构:

@swagger.Response(code: number, value: JSONSchemaObject)

@Controller

定义控制器文档:

@swagger.Controller(summary: string, description: string, ...tags: string[])

类型定义

type SwaggerParameterInWhere = 
  | "query"    // URL 查询参数
  | "header"   // 请求头参数
  | "path"     // 路径参数
  | "cookie"   // Cookie 参数
  | "formData" // 表单数据
  | "body";    // 请求体

自动定义加载

// 自动加载定义文件
await swagger.autoLoadDefinitons('./definitions');

许可证

MIT

1.1.29

11 months ago

1.1.18

1 year ago

1.1.28

11 months ago

1.1.32

8 months ago

1.1.31

9 months ago

1.1.27

11 months ago

1.1.16

1 year ago

1.1.26

11 months ago

1.1.15

1 year ago

1.1.10

1 year ago

1.1.8

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.0

1 year ago

1.0.27

1 year ago

1.0.26

1 year ago

1.0.24

1 year ago

1.0.22

1 year ago

1.0.20

1 year ago

1.0.8

1 year ago