我有一个使用Swagger Akka HTTP的Scala应用程序在我的项目中生成swagger.json。它有效,但我有一些问题:
我正在寻找一种在构建期间生成swagger.json文件的方法,例如:作为我更新路线时可以运行的SBT任务。
我已经看过sbt-swagger但它已经更新了2年,所以我不会在sbt 1上运行。+。
是否有一些我错过的脚本,要点或文档?理想情况下,我希望能够为Swagger注释处理器提供包前缀,让它扫描类文件并将文件输出到指定位置。
答案 0 :(得分:1)
由于缺少更好的选择,我写了自己的sbt:sbt-swagger-2。
您将其添加到plugins.sbt
addSbtPlugin("io.scalaland" % "sbt-swagger-2" % sbtSwagger2Version)
然后定义如何生成每个swagger.json
文件
// API v1
swaggerOutputs += Swagger.Output(
inputFilter = clazz => Set(
"backend.healthcheck",
"backend.auth",
"backend.api.v1"
).exists(prefix => clazz.getName.startsWith(prefix)),
output = (Compile / classDirectory).value / "docs" / "v1" / "swagger.json",
host = "http://localhost",
schemes = List(Swagger.Scheme.HTTP, Swagger.Scheme.HTTPS),
securitySchemeDefinitions = Map("token" -> new Swagger.OAuth2Definition().password("/auth")),
info = Swagger.Info(
title = "Backend API v1",
version = version.value,
description = """V1 API description""".stripMargin
)
)
// API v2
swaggerOutputs += Swagger.Output(
inputFilter = clazz => Set(
"backend.healthcheck",
"backend.auth",
"backend.api.v2"
).exists(prefix => clazz.getName.startsWith(prefix)),
...
)
这并不完美,但总比没有好。
其他值得考虑的是endpoints之类的框架或swagger.json
中的generatinh Akka HTTP(但是您必须手动维护此文件)。