Akka HTTP 中的一点复杂路径匹配

A little complex path matching in Akka HTTP

我是 Akka HTTP 的新手,正在尝试编写我的第一个 API。路由DSL似乎有点混乱。

我成功匹配了以下内容:

/频道 /频道/频道名称

但现在我需要匹配以下内容:

/channel/channelName/channelAction

我无法让它工作。

我目前有:

private val routes: Route =
    path("channel") {
      get {
        reportAllChannelsStatus()
      }
    } ~
    pathPrefix("channel" / Remaining) { channelName =>
      get {
        singleChannelRequest(channelName, status)
      } ~
      post {
        entity(as[ChannelRequest]) { request =>
          singleChannelRequest(channelName, request.channelAction)
        }
      }
    } ~
    completeWith404()

我想为 /channel/channelName/channelAction

添加 get 和 post

知道这是怎么做到的吗? (同时提取 channelNamechannelAction

你可以匹配

path("channel" / Segment / Segment){
   (channelName, channelAction) => ...
}

请注意,对于不同类型的参数,您必须匹配不同的内容。 Segment 用于 StringIntNumber 用于 Int ...