OpenAPISwiftCodeGenerate 是 ServiceModelSwiftCodeGenerate 的一个扩展,可用于基于 OpenAPI/Swagger 服务模型生成代码。 该库可以集成到更高级别的代码生成应用程序中。
OpenAPISwiftCodeGenerate 使用 Swift Package Manager。 要使用该框架,请将以下依赖项添加到您的 Package.swift
文件中
dependencies: [
.package(url: "https://github.com/amzn/openapi-swift-code-generate.git", .upToNextMajor(from: "0.1.0"))
]
OpenAPIServiceModel
和 SwaggerServiceModel
都实现了 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 许可证。