2015-01-20 6 views
3

Я играю с Акку-HTTP и при попытке скомпилировать следующий пример:Что импортировать для работы этого кода (и вообще)?

val route: Route = 
    path("data"/IntNumber) { id => 
     get { 
     complete { 
      "GET /data/" + id 
     } 
     } 
    } 

Я считаю, что я не знаю, что включить для того, чтобы сделать его компиляции. Более того, в целом я нахожусь много раз в ситуации «тьфу, что мне нужно импортировать для этого?» или «Это не работает из-за некоторого импорта?» при работе с Scala и Akka специально. Я использую IntelliJ IDEA, но, помимо фантастической поддержки IDE, он не может автоматически импортировать требуемый материал много раз (например, при использовании шаблона ask в Akka). Я не виню IDE; Я понимаю, что иногда бывает сложно или невозможно импортировать правильные вещи. Итак, хотя мой вопрос может показаться глупым, что люди делают там, чтобы справиться с этим материалом независимо от того, какая IDE используется? и что добавить в код выше, чтобы заставить его работать?

Спасибо!

+0

Что компилятор говорит? Я имею в виду, какую ошибку вы получаете, когда пытаетесь скомпилировать это? –

ответ

1

Я думаю, что следующий код должен показать структуру, что нужно (требуется неявное ExecutionContext), а также импорт, чтобы дать вам DSL маршрутизации:

import akka.http.server._ 
import scala.concurrent.ExecutionContext 

class MyDataService(implicit ec:ExecutionContext) { 
    import Directives._ 

    val route: Route = 
    path("data"/IntNumber) { id => 
     get { 
     complete { 
      "GET /data/" + id 
     } 
     } 
    } 
} 

До тех пор, пока у вас есть неявное ExecutionContext в рамках и у вас есть доступ к имплицитам со стороны akka.http.server.Directives, вы должны иметь возможность использовать функциональность маршрутизации и директив. Это один из способов сделать это, но вы можете, например, смешать в свойстве Directives, а также получить тот же результат.

1

В целом, чтобы найти правильный импорт для импликации в Scala, вам действительно нужно иметь хорошую документацию. Иногда сообщение об ошибке компилятора может дать вам некоторые подсказки о том, какие именно вам нужны импорт, а иногда и нет.

В частности, для akka-http, к сожалению, документация еще не завершена на данный момент, что делает ее несколько сложной в использовании.

Я искал импорт для кода фрагмента кода вы предоставили и придумали:

import akka.http.server.Route 
import akka.http.server.Directives._ 

Route импорта был найден IDE, но я смог найти только импорт для директив маршрутизации на охоту, хотя исходный код для akka-http на GitHub, ища подсказки о том, как разработчики планировали использовать библиотеку. Необходимый импорт должен быть заметным в документации, но его пока нет. Мне еще предстоит найти хороший пример кода для маршрутизации DSL в akka-http.