Akka HTTP — это мощный набор инструментов для создания веб-приложений и REST API в Scala. Одним из ключевых компонентов Akka HTTP является DSL маршрутизации, который обеспечивает краткий и выразительный способ определения маршрутов и обработки входящих HTTP-запросов. В этой статье мы рассмотрим различные методы определения маршрутов, доступные в Akka HTTP, сопровождаемые примерами кода.
- Базовый маршрут:
Базовый маршрут — это самый простой способ определить маршрут в Akka HTTP. Он соответствует пути входящего запроса и методу HTTP и выполняет соответствующую логику.
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
val route: Route =
path("hello") {
get {
complete("Hello, World!")
}
}
- Параметры пути.
Akka HTTP позволяет извлекать параметры пути из URL-адреса запроса. Параметры пути обозначаются двоеточием в начале определения маршрута.
val route: Route =
path("users" / IntNumber) { userId =>
get {
complete(s"User with ID $userId")
}
}
- Параметры запроса.
Параметры запроса можно извлечь из URL-адреса запроса с помощью директивыparameter.
val route: Route =
path("users") {
get {
parameter("name") { name =>
complete(s"Hello, $name!")
}
}
}
- Составление маршрутов.
Маршруты можно составлять с помощью оператора~, что позволяет объединить несколько маршрутов в один.
val route1: Route =
path("users") {
complete("List of users")
}
val route2: Route =
path("users" / IntNumber) { userId =>
complete(s"User with ID $userId")
}
val route: Route = route1 ~ route2
- Префиксы маршрутов.
Вы можете определить общий префикс для группы маршрутов с помощью директивыpathPrefix.
val userRoutes: Route =
pathPrefix("users") {
pathEndOrSingleSlash {
complete("List of users")
} ~
path(IntNumber) { userId =>
complete(s"User with ID $userId")
}
}
В этой статье мы рассмотрели различные методы, доступные в Akka HTTP для определения маршрутов. Мы рассмотрели основные маршруты, параметры пути, параметры запроса, состав маршрута и префиксы маршрута. DSL маршрутизации Akka HTTP обеспечивает гибкий и лаконичный способ обработки входящих HTTP-запросов и создания надежных веб-приложений и REST API в Scala.