2016-12-07 20 views
0

Я пытаюсь создать API с помощью Spray, который прослушивает 2 префикса. Эти 2 префикса, в свою очередь, прослушивают необязательные целые числа.Scala: multiple pathPrefixes with Spray

Это установка, что я пытаюсь достичь:

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

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

Таким образом, API может прослушивать звонки, как

http://www.example.com/samples/2
Однако, с указанными сниппет, только один из двух префиксов прислушиваются.

Я пробовал различные стили синтаксиса, как положить ~ Тва PATHPREFIX между ними блоками и включением pathPrefixTest. Это проблема с моим синтаксисом и как я могу достичь нескольких pathPrefixes?

ответ

0

Использование Акка HTTP, не спрей:

спрей больше не поддерживается и был заменен 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) 
    } 
} 
+0

Спасибо, это решает мою проблему. Особенно синтаксис для нескольких pathPrefixes был для меня неясным раньше. – Thomas