encodeResponse

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

    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));
The source code for this page can be found here.