2017-05-02 44 views
0

我对Scala很新,并尝试使用SBT编写Spray API示例进行练习,但遇到了问题。类型不匹配,预期:(​​HNil)=>路由。路由,实际:标准路由

Issue with routing API ** Type Mismatch

import spray.routing.SimpleRoutingApp 
import akka.actor.ActorSystem 
object ScalaBay extends App with SimpleRoutingApp { 
    implicit val actorSystem = ActorSystem() 
    startServer(interface = "localhost", port = 8080) { 
     get { path("hello") { 
      complete { "welcome" } 
       } 
     } 
    } 
} 
  1. 我已经创建了使用喷雾和阿卡路由API。
  2. 一旦服务器以localhost地址开始,一旦获得path =“hello”,它应该完成一些成功消息。
  3. 但得到错误“类型不匹配,预期:(​​HNil)=>路由。路由,实际:标准路由”,而路由到后给路径。

请帮我解决这个问题。

回答

0

我觉得有一个地方需要使用lambda语法,因为输入是一个函数,而不是一个值,就像错误所暗示的那样。 HNil in Spray routing意味着你没有定义从路径中提取的参数或实体,所以定义的函数定义为HNil,空的HList类型,但它的形式为HNil => routing.Route,所以你需要在某处使用_ => route

import spray.routing.SimpleRoutingApp 
import akka.actor.ActorSystem 
object ScalaBay extends App with SimpleRoutingApp { 
    implicit val actorSystem = ActorSystem() 
    startServer(interface = "localhost", port = 8080) { 
     get { path("hello") { _ => 
      complete("welcome") 
      } 
     } 
    } 
} 
+0

感谢@flavian的帮助。请按照您的建议修改代码后,请参阅下面的错误。类型不匹配,预期:(​​HNil)=> routing.Route,actual:(RequestContext)=> Unit。你能告诉我在IntelliJ IDE中如何解决这个问题吗?谢谢。 – BinDev