1

users/{id}/permissionPOSTメソッドを使用してスプレールート経由でパスにアクセスしたい。何らかの理由で(そして私はさまざまな構成を試しました)、ルートが登録されず、が表示されます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.")
              }
          }
        }
      } ~

ここで何かが足りませんか?

4

1 に答える 1

2

そのように「Rest」を使用しないでください。代わりに「PathElement」を試してください。

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

Int の場合は IntNumber を使用しますが、Rest は URL の「残りの部分」を最後まで一致させたい場合です... したがって、使用した方法では意味がありません。最後に配置する必要があります。

于 2013-02-10T12:34:00.350 に答える