decodeRequest
Tries to decode the request with the specified Decoder
or rejects the request with an
UnacceptedRequestEncodingRejection(supportedEncoding)
.
Signature
def decodeRequest(decoder: Decoder): Directive0
Description
The decodeRequest
directive is the building block for the decompressRequest
directive.
decodeRequest
and decompressRequest
are related like this:
decompressRequest(Gzip) = decodeRequest(Gzip)
decompressRequest(a, b, c) = decodeRequest(a) | decodeRequest(b) | decodeRequest(c)
decompressRequest() = decodeRequest(Gzip) | decodeRequest(Deflate) | decodeRequest(NoEncoding)
Example
val route =
decodeRequest(Gzip) {
entity(as[String]) { content: String =>
complete(s"Request content: '$content'")
}
}
Get("/", helloGzipped) ~> `Content-Encoding`(gzip) ~> route ~> check {
responseAs[String] === "Request content: 'Hello'"
}
Get("/", helloDeflated) ~> `Content-Encoding`(deflate) ~> route ~> check {
rejection === UnsupportedRequestEncodingRejection(gzip)
}
Get("/", "hello") ~> `Content-Encoding`(identity) ~> route ~> check {
rejection === UnsupportedRequestEncodingRejection(gzip)
}