RequestSize 過濾器
當請求大小超過允許限制時,RequestSize 過濾器可以阻止請求到達下游服務。該過濾器接受一個 maxSize 引數。maxSize 是一個 DataSize 型別,因此值可以定義為一個數字,後跟一個可選的 DataUnit 字尾,例如“KB”或“MB”。預設值為“B”(位元組)。它是以位元組定義的請求允許大小限制。以下列表配置了一個 RequestSize 過濾器。
application.yml
spring:
cloud:
gateway:
mvc:
routes:
- id: request_size_route
uri: https://:8080
predicates:
- Path=/upload
filters:
- name: RequestSize
args:
maxSize: 5000000
GatewaySampleApplication.java
import static org.springframework.cloud.gateway.server.mvc.filter.BeforeFilterFunctions.uri;
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())
.before(uri("https://:8080"))
.before(requestSize("5000000"))
.build();
}
}
當請求因大小而被拒絕時,RequestSize 過濾器會將響應狀態設定為 413 Payload Too Large,並帶有一個附加的 errorMessage 標頭。以下示例顯示了這樣的 errorMessage:
errorMessage : Request size is larger than permissible limit. Request size is 6.0 MB where permissible limit is 5.0 MB
| 如果未在路由定義中作為過濾器引數提供,則預設請求大小設定為 5MB。 |