RequestSize フィルター

リクエストのサイズが許容制限を超える場合、RequestSize フィルターはリクエストがダウンストリームサービスに到達することを制限できます。フィルターは maxSize パラメーターを受け取ります。maxSize は DataSize 型であるため、値は数値の後に "KB" や "MB" などのオプションの DataUnit サフィックスを付けたものとして定義できます。デフォルトはバイトを表す "B" です。これは、バイト単位で定義されるリクエストの許容サイズ制限です。次のリストは、RequestSize フィルターを構成します。

application.yml
spring:
  cloud:
    gateway:
      mvc:
        routes:
        - id: request_size_route
          uri: http://localhost:8080
          predicates:
          - Path=/upload
          filters:
          - name: RequestSize
            args:
              maxSize: 5000000
GatewaySampleApplication.java
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.requestSize;
import static org.springframework.cloud.gateway.server.mvc.handler.GatewayRouterFunctions.route;
import static org.springframework.cloud.gateway.server.mvc.handler.HandlerFunctions.http;

@Configuration
class RouteConfiguration {

    @Bean
    public RouterFunction<ServerResponse> gatewayRouterFunctionsRequestSize() {
		return route("request_size_route")
				.GET("/upload", http("http://localhost:8080"))
					.before(requestSize("5000000"))
					.build();
    }
}

RequestSize フィルターは、サイズが原因でリクエストが拒否された場合、レスポンスステータスを追加のヘッダー errorMessage を持つ 413 Payload Too Large として設定します。次の例は、そのような errorMessage を示しています。

errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB
ルート定義でフィルター引数として指定されていない場合、デフォルトのリクエストサイズは 5MB に設定されます。