下面列出了怎么用org.springframework.boot.web.server.Compression的API类实例代码及写法,或者点击链接到github查看源代码。
@Test
void shouldReturnCompressedResponse() {
final ArmeriaReactiveWebServerFactory factory = factory();
final Compression compression = new Compression();
compression.setEnabled(true);
compression.setMinResponseSize(DataSize.ofBytes(1));
compression.setMimeTypes(new String[] { "text/plain" });
compression.setExcludedUserAgents(new String[] { "unknown-agent/[0-9]+\\.[0-9]+\\.[0-9]+$" });
factory.setCompression(compression);
runEchoServer(factory, server -> {
final AggregatedHttpResponse res = sendPostRequest(httpClient(server));
assertThat(res.status()).isEqualTo(com.linecorp.armeria.common.HttpStatus.OK);
assertThat(res.headers().get(HttpHeaderNames.CONTENT_ENCODING)).isEqualTo("gzip");
assertThat(res.contentUtf8()).isNotEqualTo("hello");
});
}
@Override
public HttpServerOptions apply(HttpServerOptions options) {
Compression compression = factory.getCompression();
if (compression != null) {
options.setCompressionSupported(compression.getEnabled());
}
return options;
}
@Test
void shouldReturnNonCompressedResponse_dueToContentType() {
final ArmeriaReactiveWebServerFactory factory = factory();
final Compression compression = new Compression();
compression.setEnabled(true);
compression.setMinResponseSize(DataSize.ofBytes(1));
compression.setMimeTypes(new String[] { "text/html" });
factory.setCompression(compression);
runEchoServer(factory, server -> {
final AggregatedHttpResponse res = sendPostRequest(httpClient(server));
validateEchoResponse(res);
assertThat(res.headers().get(HttpHeaderNames.CONTENT_ENCODING)).isNull();
});
}
@Test
void shouldReturnNonCompressedResponse_dueToUserAgent() {
final ArmeriaReactiveWebServerFactory factory = factory();
final Compression compression = new Compression();
compression.setEnabled(true);
compression.setMinResponseSize(DataSize.ofBytes(1));
compression.setExcludedUserAgents(new String[] { "test-agent/[0-9]+\\.[0-9]+\\.[0-9]+$" });
factory.setCompression(compression);
runEchoServer(factory, server -> {
final AggregatedHttpResponse res = sendPostRequest(httpClient(server));
validateEchoResponse(res);
assertThat(res.headers().get(HttpHeaderNames.CONTENT_ENCODING)).isNull();
});
}
CompressionCustomizer(Compression compression) {
this.compression = compression;
}
private void configureArmeriaService(ServerBuilder sb, ArmeriaSettings settings) {
final MeterIdPrefixFunctionFactory meterIdPrefixFunctionFactory =
settings.isEnableMetrics() ? firstNonNull(findBean(MeterIdPrefixFunctionFactory.class),
MeterIdPrefixFunctionFactory.ofDefault())
: null;
configurePorts(sb, settings.getPorts());
final DocServiceBuilder docServiceBuilder = DocService.builder();
configureThriftServices(sb,
docServiceBuilder,
findBeans(ThriftServiceRegistrationBean.class),
meterIdPrefixFunctionFactory,
settings.getDocsPath());
configureGrpcServices(sb,
docServiceBuilder,
findBeans(GrpcServiceRegistrationBean.class),
meterIdPrefixFunctionFactory,
settings.getDocsPath());
configureHttpServices(sb,
findBeans(HttpServiceRegistrationBean.class),
meterIdPrefixFunctionFactory);
configureAnnotatedServices(sb,
docServiceBuilder,
findBeans(AnnotatedServiceRegistrationBean.class),
meterIdPrefixFunctionFactory,
settings.getDocsPath());
configureServerWithArmeriaSettings(sb, settings,
firstNonNull(findBean(MeterRegistry.class), Metrics.globalRegistry),
findBeans(HealthChecker.class));
if (settings.getSsl() != null) {
configureTls(sb, settings.getSsl());
}
final ArmeriaSettings.Compression compression = settings.getCompression();
if (compression != null && compression.isEnabled()) {
final long parsed = parseDataSize(compression.getMinResponseSize());
sb.decorator(contentEncodingDecorator(compression.getMimeTypes(),
compression.getExcludedUserAgents(),
Ints.saturatedCast(parsed)));
}
if (!Strings.isNullOrEmpty(settings.getDocsPath())) {
sb.serviceUnder(settings.getDocsPath(), docServiceBuilder.build());
}
}