POST および PUT リクエストには、次の構文を使用します。
put {
entity(as[CaseClass]) { entity =>
returnsOption(entity).map(result => complete{(Created, result)})
.getOrElse(complete{(NotFound, "I couldn't find the parent resource you're modifying")})
}
}
GET リクエストについても同じことをしようとしていますが、PUT ソリューションと同じように動作させることはできません。GET リクエストでこれを行う良い方法は何ですか?
更新:次のハックでこれを機能させました:
(get & parameters('ignored.?)) {
//TODO find a way to do this without ignored parameters
(ingored:Option[String]) => {
returnsOption().map(result => complete(result))
.getOrElse(complete{(NotFound, "")})
}
}
() =>
orで同様のことが可能になると期待してctx =>
いますが、マーシャリングに問題が発生するため、うまくいきません。
... could not find implicit value for evidence parameter of type spray.httpx.marshalling.Marshaller[(spray.http.StatusCodes.ClientError, String)]
}).getOrElse(ctx.complete{(NotFound, "")})
^
これは、私がspray-jsonを使用しているという事実に何らかの形で関連している可能性がありますか?