我想使用POST方法通过Spray路径访问路径users/{id}/permission
。出于某种原因(我尝试了不同的配置)它没有注册路由,我得到了405 METHOD NOT ALLOWED
。
以下代码是pathPrefix“users”的一部分。 GET有效,但POST没有。
path(Rest / "permission") { id =>
/**
* save permissions object for a user
*/
post {
entity(as[String]) { body =>
try {
val uperm = parse[UserPermission](body)
UserPermission.store(uperm)
respondWithMediaType(`application/json`) {
complete {
generate(uperm)
}
}
} catch {
case e: com.codahale.jerkson.ParsingException =>
complete {
HttpResponse(BadRequest, "Submitted malformed data.")
}
}
}
} ~
/**
* grab permissions for a single user
*/
get {
try {
val uperm = UserPermission.fetch(id)
respondWithMediaType(`application/json`) {
complete {
generate(uperm)
}
}
} catch {
case e: java.lang.NullPointerException =>
complete {
HttpResponse(NotFound, "Object not found.")
}
}
}
} ~
我在这里错过了什么吗?
答案 0 :(得分:2)
你不应该那样使用“Rest”,而是尝试“PathElement”:
path(PathElement / "permission") { id =>
...
}
如果它是一个Int使用IntNumber,但是如果你想将url的“rest”匹配到最后......那么它就像你使用的方式一样没有意义,它应该放在最后