method
Signature
/**
* Rejects all requests whose HTTP method does not match the given one.
*
* @group method
*/
def method(httpMethod: HttpMethod): Directive0 =
extractMethod.flatMap[Unit] {
case `httpMethod` ⇒ pass
case _ ⇒ reject(MethodRejection(httpMethod))
} & cancelRejections(classOf[MethodRejection])
Description
Matches HTTP requests based on their method.
This directive filters the incoming request by its HTTP method. Only requests with the specified method are passed on to the inner route. All others are rejected with a MethodRejection, which is translated into a 405 Method Not Allowed response by the default RejectionHandler.
Example
val route = method(HttpMethods.PUT) { complete("This is a PUT request.") }
// tests:
Put("/", "put content") ~> route ~> check {
responseAs[String] shouldEqual "This is a PUT request."
}
Get("/") ~> Route.seal(route) ~> check {
status shouldEqual StatusCodes.MethodNotAllowed
responseAs[String] shouldEqual "HTTP method not allowed, supported methods: PUT"
}
Contents