encodeResponse
Signature¶
def encodeResponse: Directive0
Description¶
Encodes the response with the encoding that is requested by the client via the Accept-Encoding
header or rejects the request with an UnacceptedResponseEncodingRejection(supportedEncodings)
.
The response encoding is determined by the rules specified in RFC7231.
If the Accept-Encoding
header is missing or empty or specifies an encoding other than identity, gzip or deflate then no encoding is used.
Example¶
sourceval route = encodeResponse { complete("content") }
// tests:
Get("/") ~> route ~> check {
response should haveContentEncoding(identity)
}
Get("/") ~> `Accept-Encoding`(gzip, deflate) ~> route ~> check {
response should haveContentEncoding(gzip)
}
Get("/") ~> `Accept-Encoding`(deflate) ~> route ~> check {
response should haveContentEncoding(deflate)
}
Get("/") ~> `Accept-Encoding`(identity) ~> route ~> check {
response should haveContentEncoding(identity)
}
sourceimport static org.apache.pekko.http.javadsl.server.Directives.complete;
import static org.apache.pekko.http.javadsl.server.Directives.encodeResponse;
final Route route = encodeResponse(() -> complete("content"));
// tests:
testRoute(route)
.run(
HttpRequest.GET("/")
.addHeader(AcceptEncoding.create(HttpEncodings.GZIP))
.addHeader(AcceptEncoding.create(HttpEncodings.DEFLATE)))
.assertHeaderExists(ContentEncoding.create(HttpEncodings.GZIP));
testRoute(route)
.run(HttpRequest.GET("/").addHeader(AcceptEncoding.create(HttpEncodings.DEFLATE)))
.assertHeaderExists(ContentEncoding.create(HttpEncodings.DEFLATE));
// This case failed!
// testRoute(route).run(
// HttpRequest.GET("/")
// .addHeader(AcceptEncoding.create(HttpEncodings.IDENTITY))
// ).assertHeaderExists(ContentEncoding.create(HttpEncodings.IDENTITY));
1.0.1