KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I haven't found a solid example or structure to splitting up Spray.io routes into multiple files. I am finding that the current structure of my routes are going to become very cumbersome, and it would be nice to abstract them into different "Controllers" for a very simple REST API app. Docs don't seem to help too much: http://spray.io/documentation/spray-routing/key-concepts/directives/#directives Here's what I have so far: class AccountServiceActor extends Actor with AccountService { def actorRefFactory = context def receive = handleTimeouts orElse runRoute(demoRoute) def handleTimeouts: Receive = { case Timeout(x: HttpRequest) => sender ! HttpResponse(StatusCodes.InternalServerError, "Request timed out.") } } // this trait defines our service behavior independently from the service actor trait AccountService extends HttpService { val demoRoute = { get { path("") { respondWithMediaType(`text/html`) { // XML is marshalled to `text/xml` by default, so we simply override here complete(index) } } ~ path("ping") { complete("PONG!") } ~ path("timeout") { ctx => // we simply let the request drop to provoke a timeout } ~ path("crash") { ctx => throw new RuntimeException("crash boom bang") } ~ path("fail") { failWith(new RuntimeException("aaaahhh")) } ~ path("riaktestsetup") { Test.setupTestData complete("SETUP!") } ~ path("riaktestfetch" / Rest) { id => complete(Test.read(id)) } } } } Thanks for help on this!
Tags (comma-separated)
Save Edits
Cancel