增加了api文档

This commit is contained in:
2026-09-01 18:17:37 +08:00
parent e0e57a7eb4
commit 73e770db80
25 changed files with 913 additions and 140 deletions
+14
View File
@@ -20,6 +20,11 @@ public class OpenApiComponents <: IOpenApiSerializable {
*/
public var schemas = HashMap<String, OpenApiSchema>()
/**
* @brief 表示组件中的安全方案集合。
*/
public var securitySchemes = HashMap<String, OpenApiSecurityScheme>()
/**
* @brief 创建 OpenAPI 组件实例。
*/
@@ -41,6 +46,15 @@ public class OpenApiComponents <: IOpenApiSerializable {
}
writer.endObject()
}
if (!securitySchemes.isEmpty()) {
writer.writeName("securitySchemes")
writer.startObject()
for ((key, value) in securitySchemes) {
writer.writeName(key)
value.serializeAsV3(writer)
}
writer.endObject()
}
writer.endObject()
}
}
@@ -6,22 +6,56 @@
* This source file is licensed under the MIT License found in the
* LICENSE file in the root directory of this source tree.
*/
package simcu::simapi.openapi.models
import std.collection.*
/**
* @brief 表示 OpenAPI 安全需求对象。
*
* 每个实例对应一个安全需求条目,例如 {"Token": []}。
*/
public class OpenApiSecurityRequirement <: IOpenApiSerializable {
private let _requirements = ArrayList<(String, ArrayList<String>)>()
/**
* @brief 创建 OpenAPI 安全需求对象。
*/
public init() {
}
/**
* @brief 添加一个安全方案需求。
* @param schemeName 安全方案名称。
*/
public func addScheme(schemeName: String): Unit {
_requirements.add((schemeName, ArrayList<String>()))
}
/**
* @brief 添加一个带授权范围的安全方案需求。
* @param schemeName 安全方案名称。
* @param scopes 该方案要求的授权范围集合(OAuth2 场景)。
*/
public func addScheme(schemeName: String, scopes: ArrayList<String>): Unit {
_requirements.add((schemeName, scopes))
}
/**
* @brief 按 OpenAPI V3 格式写出当前安全需求对象。
* @param writer OpenAPI 写入器。
*/
public func serializeAsV3(writer: IOpenApiWriter): Unit {}
public func serializeAsV3(writer: IOpenApiWriter): Unit {
writer.startObject()
for ((schemeName, scopes) in _requirements) {
writer.writeName(schemeName)
writer.startArray()
for (scope in scopes) {
writer.writeValue(scope)
}
writer.endArray()
}
writer.endObject()
}
}
@@ -0,0 +1,77 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
/*
* Copyright (c) 杭州颉创科技有限公司 2025. All rights reserved.
* This source file is licensed under the MIT License found in the
* LICENSE file in the root directory of this source tree.
*/
package simcu::simapi.openapi.models
/**
* @brief 表示 OpenAPI 安全方案对象。
*/
public class OpenApiSecurityScheme <: IOpenApiSerializable {
/**
* @brief 表示安全方案类型(apiKey/http/oauth2/openIdConnect)。
*/
public var schemeType: String = "apiKey"
/**
* @brief 表示用于安全方案的参数名称(apiKey 时有效)。
*/
public var name: ?String = None
/**
* @brief 表示 apiKey 参数所在位置(header/query/cookie)。
*/
public var location: ?String = None
/**
* @brief 表示 HTTP 认证方案名称(http 时有效,如 bearer)。
*/
public var scheme: ?String = None
/**
* @brief 表示安全方案的描述信息。
*/
public var description: ?String = None
/**
* @brief 表示 bearer 令牌的格式提示(http+bearer 时有效)。
*/
public var bearerFormat: ?String = None
/**
* @brief 创建 OpenAPI 安全方案对象。
*/
public init() {
}
/**
* @brief 按 OpenAPI V3 格式写出当前安全方案对象。
* @param writer OpenAPI 写入器。
*/
public func serializeAsV3(writer: IOpenApiWriter): Unit {
writer.startObject()
writer.writeName("type")
writer.writeValue(schemeType)
if (let Some(value) <- description) {
writer.writeName("description")
writer.writeValue(value)
}
if (let Some(value) <- name) {
writer.writeName("name")
writer.writeValue(value)
}
if (let Some(value) <- location) {
writer.writeName("in")
writer.writeValue(value)
}
if (let Some(value) <- scheme) {
writer.writeName("scheme")
writer.writeValue(value)
}
if (let Some(value) <- bearerFormat) {
writer.writeName("bearerFormat")
writer.writeValue(value)
}
writer.endObject()
}
}