Cask — это микрофреймворк HTTP, предоставляющий простой и гибкий способ создания веб-приложений.
Основное внимание уделяется простоте использования, что делает его идеальным для новичков, но при этом приходится отказываться от некоторых функций, предоставляемых другими фреймворками, например, асинхронности.
Чтобы определить endpoint, достаточно аннотировать функцию аннотацией, указывающей путь запроса. Cask позволяет вручную строить ответ с помощью инструментов, предоставляемых библиотекой, указывая содержимое, заголовки, код статуса и т.д. Функция endpoint также может возвращать строку, JSON тип uPickle или шаблон Scalatags. В этом случае Cask автоматически создаст ответ с соответствующими заголовками.
Cask поставляется в комплекте с библиотекой uPickle для обработки JSON, поддерживает WebSockets и позволяет расширять конечные точки с помощью декораторов, которые можно использовать для обработки аутентификации или ограничения скорости.
Вы можете объявить зависимость от Cask с помощью следующей директивы using
:
//> using dep com.lihaoyi::cask::0.10.2
В файле build.sbt
вы можете добавить зависимость от Cask:
lazy val example = project.in(file("example"))
.settings(
scalaVersion := "3.4.2",
libraryDependencies += "com.lihaoyi" %% "cask" % "0.10.2",
fork := true
)
В файле build.sc
вы можете добавить зависимость от Cask:
object example extends RootModule with ScalaModule {
def scalaVersion = "3.4.2"
def ivyDeps = Agg(
ivy"com.lihaoyi::cask::0.10.2"
)
}