나는 첫 번째 전체 REST 프로젝트를 만들기로 많은 어려움을 겪고 있었다. 내가 찾은 사례는 전 세계의 안녕하세요 ... 블로그를 거의 읽지 않고 의견이 거의 없으며 예제 프로젝트를 만들기로 결정했습니다. 그것은 스칼라/akka/스프레이/MySQL을 기반으로
이 데이터 당신은 여기 https://github.com/vixxx123/scalasprayslickexample
에 그것을 확인할 수 등이 변경되었음을 클라이언트에게 알리는 웹 소켓 전체 작업 예제는이 프로젝트에서 라우팅의 샘플 코드는 :
val personCreateHandler = actorRefFactory.actorOf(RoundRobinPool(2).props(Props[CreateActor]), s"${TableName}CreateRouter")
val personPutHandler = actorRefFactory.actorOf(RoundRobinPool(5).props(Props[UpdateActor]), s"${TableName}PutRouter")
val personGetHandler = actorRefFactory.actorOf(RoundRobinPool(20).props(Props[GetActor]), s"${TableName}GetRouter")
val personDeleteHandler = actorRefFactory.actorOf(RoundRobinPool(2).props(Props[DeleteActor]), s"${TableName}DeleteRouter")
val userRoute =
pathPrefix("person") {
pathEnd {
get {
ctx => personGetHandler ! GetMessage(ctx, None)
} ~
post {
entity(as[Person]) {
entity =>
ctx => personCreateHandler ! CreateMessage(ctx, entity)
}
}
} ~
pathPrefix (IntNumber){
entityId => {
pathEnd {
get {
ctx => personGetHandler ! GetMessage(ctx, Some(entityId))
} ~ put {
entity(as[Person]) { entity =>
ctx => personPutHandler ! PutMessage(ctx, entity.copy(id = Some(entityId)))
}
} ~ delete {
ctx => personDeleteHandler ! DeleteMessage(ctx, entityId)
} ~ patch {
ctx => personPutHandler ! PatchMessage(ctx, entityId)
}
}
}
}
}
그리고 배우 핸들러를 작성의 샘플 :
override def receive: Receive = {
case CreateMessage(ctx, person) =>
val localCtx = ctx
connectionPool withSession {
implicit session =>
try {
val resId = PersonsIdReturning += person
val addedPerson = person.copy(id = Some(resId.asInstanceOf[Int]))
localCtx.complete(addedPerson)
publishAll(CreatePublishMessage(TableName, localCtx.request.uri + "/" + addedPerson.id.get, addedPerson))
L.debug(s"Person create success")
} catch {
case e: Exception =>
L.error(s"Ups cannot create person: ${e.getMessage}", e)
localCtx.complete(e)
}
}
}
이없는 두 가지 중요한 것들이 여전히 : OAuth2를가하고 notifica를 밀어 특정 사용자/웹 연결을 통한 연결
여기 예제를보고 있었고 CDI를 사용하는 것으로 나타났습니다. 왜 당신이 그것을 사용하기로 결정한 특별한 이유? – EdMelo
CDI는 의존성 주입을 의미합니까? – Gangstead
예./* Stackoverflow가 더 많은 문자를 필요로하므로 ... */ – EdMelo