【问题标题】:Scala: multiple pathPrefixes with SprayScala:使用Spray的多个pathPrefixes
【发布时间】:2017-04-22 16:45:56
【问题描述】:

我正在尝试使用 Spray 创建一个侦听 2 个前缀的 API。这 2 个前缀依次监听可选整数。

这是我想要实现的设置:

val itemRoute = {
  pathPrefix("configs") {
     <...>
  }

  pathPrefix("samples") {
    <...>   
  }
}

这样,API 可以像这样监听调用

http://www.example.com/samples/2
然而,使用所述sn-p,只听两个前缀中的一个。

我尝试了不同的语法风格,例如在两个 pathPrefix 块之间放置一个 ~,并合并 pathPrefixTest。这是我的语法问题吗?如何实现多个 pathPrefixes?

【问题讨论】:

    标签: scala rest api routing spray


    【解决方案1】:

    使用 Akka http,喷雾:

    spray 不再维护,已被 Akka HTTP 取代。 请查看迁移指南以获取有关升级的帮助。 Lightbend 提供商业支持。

    无论如何,这个例子是可行的:

    package test
    
    import akka.http.scaladsl.server.Directives._
    
    import akka.http.scaladsl.Http
    
    import akka.actor.ActorSystem
    import akka.stream.ActorMaterializer
    
    object TesHttp {
    
       val routes = pathPrefix("configs") {
         complete {
           "configs" 
         }
       } ~ 
       pathPrefix("samples") { 
         complete {
           "samples"
          }
       }
    
    
      def main(args: Array[String]) : Unit = {
        implicit val system = ActorSystem()
        implicit val mat    = ActorMaterializer()
        import system.dispatcher
    
        println("Starting ..")
        val binding = Http().bindAndHandle(routes, interface = "localhost", 9091)
      }
     }
    

    【讨论】:

    • 谢谢,这解决了我的问题。尤其是多个 pathPrefixes 的语法我以前不清楚。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-18
    • 1970-01-01
    • 2021-11-22
    • 1970-01-01
    相关资源
    最近更新 更多