Я новичок в Scala и Play; и я написал контроллер "do all", который содержит как бизнес, так и логику представления. Я хочу реорганизовать бизнес-логику из контроллера.
Здесь выглядит мой Scala/Play. Что такое хороший/идиоматический способ реорганизации бизнес-логики из этого контроллера с чистым интерфейсом?
object NodeRender extends Controller {
...
def deleteNode(nodeId: Long) = Action { request =>
//business logic
val commitDocument = Json.toJson(
Map(
"delete" -> Seq( Map( "id" -> toJson( nodeId)))
))
val commitSend = Json.stringify( commitDocument)
val commitParams = Map( "commit" -> "true", "wt" -> "json")
val headers = Map( "Content-type" -> "application/json")
val sol = host( "127.0.0.1", 8080)
val updateReq = sol / "solr-store" / "collection1" / "update" / "json" <<?
commitParams <:< headers << commitSend
val commitResponse = Http( updateReq)()
//presentation logic
Redirect( routes.NodeRender.listNodes)
}
В Python/Django я пишу два класса XApiHandler
и XBackend
и использую чистый интерфейс между ними.
xb = XBackend( user).do_stuff()
if not xb:
return a_404_error
else:
return the_right_stuff( xb.content) #please dont assume its a view!