Spray.io指令没有注册?

时间:2013-02-07 22:20:17

标签: scala spray

我想使用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.")
              }
          }
        }
      } ~

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:2)

你不应该那样使用“Rest”,而是尝试“PathElement”:

path(PathElement / "permission") { id =>
  ...
}

如果它是一个Int使用IntNumber,但是如果你想将url的“rest”匹配到最后......那么它就像你使用的方式一样没有意义,它应该放在最后