由于缺乏更好的选择,我写了自己的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
或从生成Akka HTTP
大摇大摆json
(但您必须手动维护此文件)。