compressResponseIfRequested
Only compresses the response when specifically requested by the Accept-Encoding
request header
(i.e. the default is “no compression”).
Signature
def compressResponseIfRequested()(implicit refFactory: ActorRefFactory): Directive0
The signature shown is simplified, the real signature uses magnets. [1]
[1] | See The Magnet Pattern for an explanation of magnet-based overloading. |
Description
The compressResponseIfRequested
directive is an alias for compressResponse(NoEncoding, Gzip, Deflate)
and will
behave as follows:
Accept-Encoding header |
resulting response |
---|---|
Accept-Encoding: gzip |
compressed with Gzip |
Accept-Encoding: deflate |
compressed with Deflate |
Accept-Encoding: deflate, gzip |
compressed with Gzip |
Accept-Encoding: identity |
uncompressed |
no Accept-Encoding header present |
uncompressed |
For an overview of the different compressResponse
directives see When to use which compression directive?.
Example
val route = compressResponseIfRequested() { complete("content") }
Get("/") ~> route ~> check {
response must haveContentEncoding(identity)
}
Get("/") ~> `Accept-Encoding`(gzip, deflate) ~> route ~> check {
response must haveContentEncoding(gzip)
}
Get("/") ~> `Accept-Encoding`(deflate) ~> route ~> check {
response must haveContentEncoding(deflate)
}
Get("/") ~> `Accept-Encoding`(identity) ~> route ~> check {
response must haveContentEncoding(identity)
}