2014-04-10 8 views
1

spray.io를 배우고 있는데 문제가 있습니다. 여러 가지 GET 매개 변수의 사례 클래스 추출을 테스트하려고합니다. 내 코드는 예 from the documentation page에서 영감 :Spray.io case class 추출 오류

package com.example 

import akka.actor.Actor 
import spray.routing._ 
import spray.http._ 
import MediaTypes._ 

class ServiceActor extends Actor 
with ServiceHello { 
    def actorRefFactory = context 
    def receive = runRoute(testRoute) 

trait ServiceHello extends HttpService with Controls { 

case class Color(keyword: String, sort_order: Int, sort_key: String) 

val route = 
    path("test") { 
     parameters('keyword.as[String], 'sort_order.as[Int], 'sort_key.as[String]).as(Color) { color => 
      handleTestRoute(color) // route working with the Color instance 
     } 
    } 
} 

이 코드는 확인을해야하지만, 나는 그것을 실행하려고하면, 나는 다음과 같은 오류가있어 :

는 ("위에 같은 기호를 확인할 수 없습니다를 등 (컬러) ")

매개 변수 유형을 누락 : 색상 (상단의"컬러 {=> ")

나는 이러한 오류를 이해하지만, 난 이해가 안 돼요 그들이 올 이유가 뭔가 잘못하고 있는가 ...

나는

스칼라 2.10.3을 실행하는거야? 나를 위해 일하는

+0

스프레이 라우팅을 사용하지 않았지만 형식 매개 변수로 'as' 메서드를 호출하면 안됩니까? '매개 변수 (...). as (Color)'대신 [매개 변수 (...).] 같은 [Color]'(중괄호의 차이점에 유의하십시오)? –

+1

블라디미르가 그렇게 생각하지 않는다. 내가하려고하는 것은 유형 매개 변수가 아닌 "as"메소드에 명시적인 디시리얼라이저를 보내는 것이다. FYI http://spray.io/documentation/1.1-SNAPSHOT/spray-routing/parameter-directives/parameters – ylos

답변

0

그게 전부 (스칼라 2.10.4, 1.3.1 스프레이) :

import akka.actor.Actor 
import spray.routing._ 
import spray.http._ 
import MediaTypes._ 

class ServiceActor extends Actor with ServiceHello { 
    def actorRefFactory = context 

    def receive = runRoute(testRoute) 
} 

trait ServiceHello extends HttpService { 

    case class Color(keyword: String, sort_order: Int, sort_key: String) 

    val testRoute = 
    path("test") { 
     parameters('keyword.as[String], 'sort_order.as[Int], 'sort_key.as[String]).as(Color) { color => 
     //handleTestRoute(color) // route working with the Color instance 
     complete { 
      <h1>test route</h1> 
     } 
     } 
    } 
} 

Controls이 무엇인지 몰라, 그래서 난 그냥 댓글을 달았습니다.