Пример Trace4Cats для конечных точек Tapir
Я изучаю разные библиотеки Scala и добрался до трассировки. Trace4Cats заявляет об интеграции с конечными точками Tapir, и я хочу включить ее в свой пример маршрутизатора Play SIRD, который использует Tapir с документацией OpenAPI.
- До сих пор я включил эти зависимости для трассировки:
// Tracing
libraryDependencies += "io.janstenpickle" %% "trace4cats-core" % trace4CatsVersion
libraryDependencies += "io.janstenpickle" %% "trace4cats-inject" % trace4CatsVersion
libraryDependencies += "io.janstenpickle" %% "trace4cats-avro-exporter" % trace4CatsVersion
libraryDependencies += "io.janstenpickle" %% "trace4cats-sttp-tapir" % trace4CatsVersion
libraryDependencies += "io.janstenpickle" %% "trace4cats-datadog-http-exporter" % trace4CatsVersion
- У меня есть рабочий пример Tapir с маршрутизатором SIRD Play Framework, как это предлагается в документации Tapir. Здесь
ApiRouter
:
@Singleton
class ApiRouter @Inject() (implicit mat: Materializer) extends SimpleRouter {
// Interpreter
private val interpreter = PlayServerInterpreter()
// Controller logic
def countCharacters(s: String): Future[Either[Unit, Int]] =
Future(Right[Unit, Int](s.length))
// Endpoint
val countCharactersEndpoint: PublicEndpoint[String, Unit, Int, Any] =
endpoint
.tag("Example API")
.in("count")
.in(query[String]("string"))
.out(plainBody[Int])
.errorOut(
statusCode(StatusCode.NotFound)
)
// Route
val countCharactersRoutes: Routes =
interpreter.toRoutes(countCharactersEndpoint.serverLogic(countCharacters))
// OpenAPI
private val openApiDocs: OpenAPI = OpenAPIDocsInterpreter().toOpenAPI(
List(countCharactersEndpoint),
"Tapir Play Sample",
"1.0.0"
)
// Doc will be on /docs
private val openApiRoute: Routes = interpreter.toRoutes(SwaggerUI[Future](openApiDocs.toYaml))
// Router
override def routes: Routes =
openApiRoute
.orElse(countCharactersRoutes)
}
Я попытался найти документацию Trace4Cats о том, как интегрировать его с Tapir, но все, что я нашел, это другие примеры, включая STTP, но я не уверен в синтаксисе Tapir. Мне нужна помощь от кого-то, у кого есть опыт работы с Trace4Cats (или Natchez , или любым другим решением , которое может здесь работать). Помощь приветствуется.
1 ответ
Ваш вопрос слишком широк, чтобы дать точный ответ, но я бы порекомендовал вам посмотреть тесты и примеры в репозитории trace4cats на GitHub: https://github.com/trace4cats/trace4cats-sttp/tree/master/modules/sttp . -tapir/src/test/scala/io/janstenpickle/trace4cats/sttp/tapir