类 ExchangeUtils
java.lang.Object
cn.herodotus.stirrup.web.core.reactive.utils.ExchangeUtils
Description: WebFlux Exchange 工具类
- 作者:
- : gengwei.zheng
- Date:
- : 2024/2/5 20:51
-
构造器概要
构造器 -
方法概要
修饰符和类型方法说明static org.springframework.web.server.ServerWebExchangecreateNewExchange(org.springframework.web.server.ServerWebExchange exchange, String requestBody) 将修改后的请求体封装为新 Exchange 的统一方法static org.springframework.web.server.ServerWebExchangecreateNewExchange(org.springframework.web.server.ServerWebExchange exchange, URI uri) 重新构建ServerWebExchangestatic org.springframework.web.server.ServerWebExchangecreateNewExchange(org.springframework.web.server.ServerWebExchange exchange, org.springframework.http.HttpHeaders headers, reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> body) 重写 WebFlux Request Bodystatic org.springframework.web.server.ServerWebExchangecreateNewExchange(org.springframework.web.server.ServerWebExchange exchange, org.springframework.http.server.reactive.ServerHttpRequest request) 重新构建ServerWebExchangestatic org.springframework.http.server.reactive.ServerHttpRequestcreateNewRequest(org.springframework.web.server.ServerWebExchange exchange) 根据 URI 重新构建 WebFlux 请求static org.springframework.http.server.reactive.ServerHttpRequestcreateNewRequest(org.springframework.web.server.ServerWebExchange exchange, URI uri) 根据 URI 重新构建 WebFlux 请求static org.springframework.http.server.reactive.ServerHttpRequestdecorateRequest(org.springframework.http.server.reactive.ServerHttpRequest request, org.springframework.http.HttpHeaders headers, reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> body) 重写 WebFlux Request,设置新的 Headers 和 RequestBodystatic org.springframework.http.HttpMethodgetHttpMethod(org.springframework.web.server.ServerWebExchange exchange) 读取ServerWebExchange中的请求方法static StringgetRequestPath(org.springframework.web.server.ServerWebExchange exchange) 读取ServerWebExchange中的请求路径static URIgetRequestURI(org.springframework.web.server.ServerWebExchange exchange) 读取ServerHttpRequest中的请求 URIstatic booleanisFormUrlencoded(String contentType) 判断请求体中的数据是否为 application/x-www-form-urlencodedstatic booleanisFormUrlencoded(org.springframework.web.server.ServerWebExchange exchange) 判断请求体中的数据是否为 application/x-www-form-urlencodedstatic booleanisGetTypeRequest(org.springframework.http.HttpMethod method) 判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。static booleanisGetTypeRequest(org.springframework.web.server.ServerWebExchange exchange) 判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。static boolean判断请求体中的数据是否为 application/jsonstatic booleanisJson(org.springframework.web.server.ServerWebExchange exchange) 判断请求体中的数据是否为 JSONstatic BooleanisPostTypeRequest(org.springframework.http.HttpMethod method, String contentType) 判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。static BooleanisPostTypeRequest(org.springframework.web.server.ServerWebExchange exchange) 判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。static reactor.core.publisher.Mono<Void> modify(org.springframework.web.server.ServerWebExchange exchange, RequestBodyModifier modifier, Function<org.springframework.web.server.ServerWebExchange, reactor.core.publisher.Mono<Void>> onFinish, Function<org.springframework.web.server.ServerWebExchange, reactor.core.publisher.Mono<Void>> onError) 修改ServerWebExchange请求体
-
构造器详细资料
-
ExchangeUtils
public ExchangeUtils()
-
-
方法详细资料
-
getRequestURI
读取ServerHttpRequest中的请求 URI- 参数:
exchange-ServerWebExchange- 返回:
- 请求路径
-
getRequestPath
读取ServerWebExchange中的请求路径- 参数:
exchange-ServerWebExchange- 返回:
- 请求路径
-
getHttpMethod
public static org.springframework.http.HttpMethod getHttpMethod(org.springframework.web.server.ServerWebExchange exchange) 读取ServerWebExchange中的请求方法- 参数:
exchange-ServerWebExchange- 返回:
- 请求方法
HttpMethod
-
decorateRequest
public static org.springframework.http.server.reactive.ServerHttpRequest decorateRequest(org.springframework.http.server.reactive.ServerHttpRequest request, org.springframework.http.HttpHeaders headers, reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> body) 重写 WebFlux Request,设置新的 Headers 和 RequestBody- 参数:
request- 请求ServerHttpRequestheaders- 新的请求头HttpHeadersbody- 新的请求体Flux- 返回:
- 重写后的请求
ServerWebExchange
-
createNewRequest
public static org.springframework.http.server.reactive.ServerHttpRequest createNewRequest(org.springframework.web.server.ServerWebExchange exchange) 根据 URI 重新构建 WebFlux 请求- 参数:
exchange-ServerWebExchange- 返回:
- 新的请求
ServerHttpRequest
-
createNewRequest
public static org.springframework.http.server.reactive.ServerHttpRequest createNewRequest(org.springframework.web.server.ServerWebExchange exchange, URI uri) 根据 URI 重新构建 WebFlux 请求- 参数:
exchange-ServerWebExchangeuri- 新的请求地址URI- 返回:
- 新的请求
ServerHttpRequest
-
createNewExchange
public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, org.springframework.http.server.reactive.ServerHttpRequest request) 重新构建ServerWebExchange- 参数:
exchange-ServerWebExchangerequest- 新请求ServerHttpRequest- 返回:
- 新的 exchange
ServerWebExchange
-
createNewExchange
public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, URI uri) 重新构建ServerWebExchange- 参数:
exchange-ServerWebExchangeuri- 新的请求地址URI- 返回:
- 新的 exchange
ServerWebExchange
-
createNewExchange
public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, String requestBody) 将修改后的请求体封装为新 Exchange 的统一方法- 参数:
exchange-ServerWebExchangerequestBody- 字符串类型的请求体- 返回:
- 新的 exchange
ServerWebExchange
-
createNewExchange
public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, org.springframework.http.HttpHeaders headers, reactor.core.publisher.Flux<org.springframework.core.io.buffer.DataBuffer> body) 重写 WebFlux Request Body- 参数:
exchange- 请求ServerWebExchangeheaders- 新的请求头HttpHeadersbody- 新的请求体Flux- 返回:
- 重写后的请求
ServerWebExchange
-
modify
public static reactor.core.publisher.Mono<Void> modify(org.springframework.web.server.ServerWebExchange exchange, RequestBodyModifier modifier, Function<org.springframework.web.server.ServerWebExchange, reactor.core.publisher.Mono<Void>> onFinish, Function<org.springframework.web.server.ServerWebExchange, reactor.core.publisher.Mono<Void>> onError) 修改ServerWebExchange请求体WebFlux 中对 POST 类型请求 RequestBody 内容的修改,其实很套路化。XSS 防护和 SQL 注入都需要对 RequestBody 进行修改,除了核心检测处理逻辑之外,整体逻辑大同小异。 所以提取了一个公共的方法,实现 WebFlux XSS 防护和 SQL 注入 RequestBody 内容修改的简化。其它场景也可以使用。
- 参数:
exchange- 请求ServerWebExchangemodifier- 请求体修改器RequestBodyModifieronFinish- 完成操作onError- 错误操作- 返回:
- Mono
-
isJson
判断请求体中的数据是否为 application/json- 参数:
contentType- Content Type- 返回:
- true 请求体数据类型为 application/json,false 请求体数据类型不是 application/json
-
isJson
public static boolean isJson(org.springframework.web.server.ServerWebExchange exchange) 判断请求体中的数据是否为 JSON- 参数:
exchange- 请求对象ServerWebExchange- 返回:
- true 请求体数据类型为 json,false 请求体数据类型不是 json
-
isFormUrlencoded
判断请求体中的数据是否为 application/x-www-form-urlencoded- 参数:
contentType- Content Type- 返回:
- true 请求体数据类型为 application/x-www-form-urlencoded,false 请求体数据类型不是 application/x-www-form-urlencoded
-
isFormUrlencoded
public static boolean isFormUrlencoded(org.springframework.web.server.ServerWebExchange exchange) 判断请求体中的数据是否为 application/x-www-form-urlencoded- 参数:
exchange- 请求对象ServerWebExchange- 返回:
- true 请求体数据类型为 application/x-www-form-urlencoded,false 请求体数据类型不是 application/x-www-form-urlencoded
-
isGetTypeRequest
public static boolean isGetTypeRequest(org.springframework.http.HttpMethod method) 判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。GET 类型请求包括 GET 和 DELETE- 参数:
method- 请求类型HttpMethod- 返回:
- true 是 Get 类型,false 不是 Get 类型
-
isGetTypeRequest
public static boolean isGetTypeRequest(org.springframework.web.server.ServerWebExchange exchange) 判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。GET 类型请求包括 GET 和 DELETE- 参数:
exchange- 请求对象ServerWebExchange- 返回:
- true 是 Get 类型,false 不是 Get 类型
-
isPostTypeRequest
public static Boolean isPostTypeRequest(org.springframework.http.HttpMethod method, String contentType) 判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。POST 类型请求包括 POST 和 PUT- 参数:
method- 请求类型HttpMethodcontentType- 内容类型- 返回:
- true 是 POST 类型,false 不是 POST 类型
-
isPostTypeRequest
判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。POST 类型请求包括 POST 和 PUT- 参数:
exchange- 请求对象ServerWebExchange- 返回:
- true 是 POST 类型,false 不是 POST 类型
-