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 に設定されます。 |