2017-05-21 1 views
0

で私だけcreateJobDetailsなくcreateJobを実行しそう単一POST呼び出しアッカ-HTTPどのようにマップJSONエンティティ2ケースクラスを持つ単一REST呼び出し

val route = (path(HttpConstants.CreateJob) & post) { 
    entity(as[JobDetailsEntity]) { 
     jobDetailsEntity: JobDetailsEntity => 
     complete(createJobDetails(updatedJobDetailsEntity).map(_.asJson)) 
     } ~ 
     entity(as[JobEntity]) { jobEntity: JobEntity => 
     complete(createJob(updatedJobEntity).map(_.asJson)) 
    } 
    } 

に複数のケースクラスでJSONをマップしようとしています。

case class JobDetailsEntity(id:Option[Long],name:String,data:String,createDate:Long) 

case class JobEntity(id:Option[Long],name:String,createDate:Long) 

これは、別のルートパスを使用して別のPOST呼び出しでこれを実行すると機能しますが、単一のREST呼び出しでこれを行う方法がある場合は、私を助けてください。

答えて

0

~(またはconcat)を使用すると、concatenate 2 routesを使用します。最初は正常に完了しない場合は、最初のフォールバックを本質的に行います。

あなたが探しているのは、単一のルートでディレクティブをネストするのと同じです。この結果を得るには、(既に指示文pathpost)を使用することができます。

val route = (path(HttpConstants.CreateJob) & post) { 
    (entity(as[JobDetailsEntity]) & entity(as[JobEntity])) { 
     (jobDetailsEntity: JobDetailsEntity, jobEntity: JobEntity) => 
     complete(...) 
     } 
    } 
関連する問題