Build - Main Branch Swift 5.6, 5.7 and 5.8 Tested Join the Smoke Server Side community on gitter Apache 2

OpenAPISwiftCodeGenerate

OpenAPISwiftCodeGenerate 是 ServiceModelSwiftCodeGenerate 的一个扩展,可用于基于 OpenAPI/Swagger 服务模型生成代码。 该库可以集成到更高级别的代码生成应用程序中。

入门指南

步骤 1:添加 OpenAPISwiftCodeGenerate 依赖项

OpenAPISwiftCodeGenerate 使用 Swift Package Manager。 要使用该框架,请将以下依赖项添加到您的 Package.swift 文件中

dependencies: [
    .package(url: "https://github.com/amzn/openapi-swift-code-generate.git", .upToNextMajor(from: "0.1.0"))
]

步骤 2:使用该库生成代码

OpenAPIServiceModelSwaggerServiceModel 都实现了 ServiceModel 协议,因此可以将它们传递到 ServiceModelSwiftCodeGenerate 中定义的 ServiceModelGenerate.generateFromModel 函数中。

例如,给定以下代码生成器

public struct MyCodeGeneration {
    static let asyncResultType = AsyncResultType(typeName: "HTTPResult",
                                                 libraryImport: "SmokeHTTPClient")
    
    public static func generateFromModel<ModelType: ServiceModel>(
        modelFilePath: String,
        modelType: ModelType.Type,
        customizations: CodeGenerationCustomizations,
        applicationDescription: ApplicationDescription,
        modelOverride: ModelOverride?,
        ...) throws {
            func generatorFunction(codeGenerator: ServiceModelCodeGenerator,
                                   serviceModel: ModelType) throws {
                try codeGenerator.generateFromModel(serviceModel: serviceModel, ...)
            }
        
            try ServiceModelGenerate.generateFromModel(
                    modelFilePath: modelFilePath,
                    customizations: customizations,
                    applicationDescription: applicationDescription,
                    modelOverride: modelOverride,
                    generatorFunction: generatorFunction)
    }
}

OpenAPI 和 Swagger 文件可以按如下方式解析

let modelFilePath = ...
let customizations = ...
let applicationDescription = ...
let modelOverride = ...

// For OpenAPI files
try MyCodeGeneration.generateFromModel(
    modelFilePath: modelFilePath,
    modelType: OpenAPIServiceModel.Type, // Defined in OpenAPIServiceModel target
    customizations: customizations,
    applicationDescription: applicationDescription,
    modelOverride: modelOverride
)

// For Swagger files
try MyCodeGeneration.generateFromModel(
    modelFilePath: modelFilePath,
    modelType: SwaggerServiceModel.Type, // Defined in OpenAPIServiceModel target
    customizations: customizations,
    applicationDescription: applicationDescription,
    modelOverride: modelOverride
)

安全性

有关更多信息,请参见 CONTRIBUTING

许可证

本项目采用 Apache-2.0 许可证。