Tapir — это декларативная, типобезопасная библиотека веб-конечных точек, написанная на Scala. Конечные точки могут быть интерпретированы как сервер (интеграция с akka http, http4s, play, finatra, vertx и другими), как клиент (используя sttp-клиент) или как документация openapi/asyncapi.
2 ответа

Тапир - метод слишком большой

Я определяю конечные точки с помощью тапира, однако получаю следующую ошибку компиляции. [информация] Компиляция 3 источников Scala в /endpoints/target/scala-2.13/classes ... [ошибка] Ошибка при отправке /endpoints/Session$ [error] Метод слишком вел…
12 мар '20 в 18:42
1 ответ

Пользовательский кодек Tapir

Я застрял в каком-то месте, использую scala, tapir и circe. sealed abstract class S1Error extends Product with Serializable object S1Error { final case class SError(error: SMError) extends S1Error } sealed abstract class SMError(message: String) obj…
16 мар '20 в 19:20
1 ответ

Scala - несоответствие типов динамических кодов состояния тапира

Я создаю конечную точку в тапире, которая требует динамических кодов состояния для вывода ошибки. Я объявил черту тюленя FailureResponseи я создал классы case, расширяющие эту черту. Подобно показанному примеру https://tapir-scala.readthedocs.io/en/…
26 ноя '19 в 13:11
0 ответов

Tapir- сгенерированный документ swagger не показывает множественные ошибки с одинаковым статусом ошибки

Я использую Tapir для определения своего интерфейса API, а также для создания документа swagger open api. Однако я столкнулся с этой проблемой Я определил свои классы ошибок как sealed abstract class SError extends Product with Serializable object S…
26 мар '20 в 00:01
1 ответ

Цирцея, Тапир и JodaTime

У меня есть класс дела вроде final case class MyClass(id: Long, eventData: EventsDTO) final case class EventsDTO( customerId: Long, eventName: String, processTime: DateTime //JodaTime ) У меня есть собственный кодировщик и декодер как val dateFormat…
03 июн '20 в 15:45
0 ответов

Tapir - Тип списка для входного параметра не работает

Я определяю конечную точку API с помощью тапира, который выглядит следующим образом import io.circe.generic.auto._ import sttp.model.StatusCode import sttp.tapir.json.circe._ import sttp.tapir._ val endpo: Route[List[String], String] = endpoint.post…
10 мар '20 в 07:17
1 ответ

Тапир, Цирцея, Змейка

У меня есть код ниже import io.circe.generic.auto._ import io.circe.Encoder import io.circe.generic.extras._, io.circe.syntax._ implicit val config: Configuration = Configuration.default.withSnakeCaseMemberNames case class User(firstName: String, la…
05 июн '20 в 00:42
0 ответов

Поле статуса в json с Tapir

Как я мог добавить status в ответ json в тапире? Предположим, у меня есть конечная точка, которая выглядит так: private lazy val endpoint = endpoint .post .in(jsonBody[Entity]) .out(jsonBody[ChangedEntity]) .errorOut(jsonBody[Error]) .serverLogic { …
27 июл '20 в 17:04
0 ответов

Тапир, Цирцея, Схема

У меня есть такой класс дела case class OffboardingError1( userId: Option[String], error: OffboardingErrorType1 ) object OffboardingError1 { implicit val encode: Encoder[OffboardingError1] = deriveEncoder[OffboardingError1] implicit val decode: Deco…
11 ноя '20 в 13:55
0 ответов

Как обрабатывать ошибки при потоковой передаче в http4s

У меня есть пример потоковой передачи с http4s и tapir import java.nio.charset.StandardCharsets import cats.effect._ import cats.implicits._ import org.http4s.HttpRoutes import org.http4s.server.Router import org.http4s.server.blaze.BlazeServerBuild…
23 ноя '20 в 11:54
2 ответа

Проблема компиляции между HttpRoutes [RIO [E, *]] и HttpRoutes [zio.Task]

Попытка скомпилировать это небольшое описание конечной точки, дружественного к ZIO, Tapir/Http4s import io.circe.generic.auto._ import org.http4s.HttpRoutes import sttp.tapir.json.circe import sttp.tapir.ztapir._ import sttp.tapir.server.http4s.ztap…
30 сен '20 в 14:30
1 ответ

Тапир с загрузкой файла HTTP Akka - отправка «раннего» ответа 2xx до того, как был получен конец запроса

Для сервиса использую тапир + акка http. Одна из конечных точек загружает файлы. val load : Endpoint[Source[ByteString, Any], Any, Any, AkkaStreams] = endpoint .post .in("load") .in(streamBody(AkkaStreams)( Schema(Schema.schemaForByteArray.schemaTyp…
09 сен '21 в 17:55
1 ответ

Неявное получение схемы из класса с типом Alias

В настоящее время я использую sttp (v. 3.3.14), и у меня проблемы со схемами некоторых классов case. В частности, классы case, содержащие псевдонимы типов. Вот простой пользовательский кодек для Either: import cats.implicits._ import io.circe.syntax…
12 окт '21 в 13:01
1 ответ

Какая библиотека лучше всего подходит для написания модульных тестов для конечных точек тапира (уровень API) в scala

Я создал конечные точки тапира в scala, где архитектура проекта такова, что уровень API вызывает уровень сервиса, а уровень сервиса вызывает уровень репо. Я написал модульные тесты для уровня обслуживания и репо (используя mockito), но теперь я не с…
1 ответ

ZIO 1.0.3 меняет способ работы сред, и теперь http4s Blaze не запускается.

Я использую ZIO впервые и начал с шаблонной заглушки с https://github.com/guizmaii/scala-tapir-http4s-zio/blob/master/src/main/scala/example/HttpApp.scala . который использует ZIO версии 1.0.0-RC17 для настройки и запуска сервера http4s Blaze, включ…
08 янв '21 в 16:41
2 ответа

Tapir не может декодировать список запечатанных трейтов с помощью `DecodingFailure(CNil, List(DownArray))`

В документации Tapir указано, что он поддерживает декодирование запечатанных признаков: https://tapir.softwaremill.com/en/latest/endpoint/customtypes.html#sealed-traits-coproducts . Однако, когда я пытаюсь сделать это с помощью этого кода, я получаю…
11 дек '20 в 12:55
1 ответ

Пример Trace4Cats для конечных точек Tapir

Я изучаю разные библиотеки Scala и добрался до трассировки. Trace4Cats заявляет об интеграции с конечными точками Tapir, и я хочу включить ее в свой пример маршрутизатора Play SIRD, который использует Tapir с документацией OpenAPI. До сих пор я вклю…
11 май '22 в 14:08
0 ответов

Как создать конечную точку с помощью Tapir в Scala с несколькими схемами

Я просто задаю вопрос, когда пытаюсь создать конечную точку с несколькими формами тел. Моя модель выглядит так: sealed trait FileExampleTrait { def kind: String } case class FileExampleOne(name: String, length: Int) extends FileExampleTrait { overri…
28 май '22 в 13:11
1 ответ

Документация Redoc для конечной точки тапира с запечатанной иерархией не отображается должным образом

Я пытаюсь определить конечную точку тапира, которая будет принимать две потенциально разные полезные нагрузки (в приведенном ниже фрагменте два разных способа определения Вещи). Я в целом следую инструкциям здесь: https://circe.github.io/circe/codec…
06 фев '23 в 16:48
0 ответов

Scala, ZIO, Tapir - zio-http и tapir, как создать обработчик отказа/ошибки на стороне API?

У меня странная проблема с ошибкой промежуточного слоя или я использую его неправильно. Я хотел бы добавить промежуточное программное обеспечение ошибок к своим маршрутам тапира и перехватывать все ошибки «изнутри» приложения. У меня есть простой ма…
19 сен '22 в 14:24