我需要帮助。我正在尝试使用CURL来做HTTP POST &使用带有参数的喷雾路由
curl -v -o UAT.json "http://*****/pvdtest1/14-JUL-2014?enriched=true" -H "Content-Type: application/json" -d '{ "text": "Test", "username": "User" }'我的JSON帖子是可选的,这意味着我也可以像
curl -v -o UAT.json "http://*****/pvdtest1/14-JUL-2014?enriched=true"在路由中如果我使用
path("pvdtest1" / Segment) { (cobDate) =>
(parameters('enriched.as[Boolean] ? false) & post) {
(enriched) => {
println(" inside post")
entity(as[Message]) { message =>
println(" inside post 1")
logger.debug("User '{}' has posted '{}'", message.username, message.text)上面的代码作品文件
但是,如果我尝试将POST设为可选,它将不起作用。
path("pvdtest1" / Segment) { (cobDate) =>
(parameters('enriched.as[Boolean] ? false) | post) {
(enriched) => {
println(" inside post")
entity(as[Message]) { message =>
println(" inside post 1")
logger.debug("User '{}' has posted '{}'", message.username, message.text)
Error:(166, 56) type mismatch;
found : spray.routing.Directive0
(which expands to) spray.routing.Directive[shapeless.HNil]
required: spray.routing.Directive[shapeless.HList]
Note: shapeless.HNil <: shapeless.HList, but class Directive is invariant in type L.
You may wish to define L as +L instead. (SLS 4.5)
(parameters('enriched.as[Boolean] ? false) | post) {有没有人能帮忙解决这个问题?
发布于 2014-10-30 00:09:44
问题是same中的|方法要求两端都是同一类型的。parameters提供一个布尔值,post没有值。&方法将这两个指令连接在一起,因此它们可能属于不同的类型。
您可以将该行更改为以下代码,以允许get和post,并捕获丰富的参数:
(get | post) { (parameters('enriched.as[Boolean] ? false)
https://stackoverflow.com/questions/26634177
复制相似问题