类 ExchangeUtils

java.lang.Object
cn.herodotus.stirrup.web.core.reactive.utils.ExchangeUtils

public class ExchangeUtils extends Object

Description: WebFlux Exchange 工具类

作者:
: gengwei.zheng
Date:
: 2024/2/5 20:51
  • 构造器概要

    构造器
    构造器
    说明
     
  • 方法概要

    修饰符和类型
    方法
    说明
    static org.springframework.web.server.ServerWebExchange
    createNewExchange(org.springframework.web.server.ServerWebExchange exchange, String requestBody)
    将修改后的请求体封装为新 Exchange 的统一方法
    static org.springframework.web.server.ServerWebExchange
    createNewExchange(org.springframework.web.server.ServerWebExchange exchange, URI uri)
    重新构建 ServerWebExchange
    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
    static org.springframework.web.server.ServerWebExchange
    createNewExchange(org.springframework.web.server.ServerWebExchange exchange, org.springframework.http.server.reactive.ServerHttpRequest request)
    重新构建 ServerWebExchange
    static org.springframework.http.server.reactive.ServerHttpRequest
    createNewRequest(org.springframework.web.server.ServerWebExchange exchange)
    根据 URI 重新构建 WebFlux 请求
    static org.springframework.http.server.reactive.ServerHttpRequest
    createNewRequest(org.springframework.web.server.ServerWebExchange exchange, URI uri)
    根据 URI 重新构建 WebFlux 请求
    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
    static org.springframework.http.HttpMethod
    getHttpMethod(org.springframework.web.server.ServerWebExchange exchange)
    读取 ServerWebExchange 中的请求方法
    static String
    getRequestPath(org.springframework.web.server.ServerWebExchange exchange)
    读取 ServerWebExchange 中的请求路径
    static URI
    getRequestURI(org.springframework.web.server.ServerWebExchange exchange)
    读取 ServerHttpRequest 中的请求 URI
    static boolean
    isFormUrlencoded(String contentType)
    判断请求体中的数据是否为 application/x-www-form-urlencoded
    static boolean
    isFormUrlencoded(org.springframework.web.server.ServerWebExchange exchange)
    判断请求体中的数据是否为 application/x-www-form-urlencoded
    static boolean
    isGetTypeRequest(org.springframework.http.HttpMethod method)
    判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。
    static boolean
    isGetTypeRequest(org.springframework.web.server.ServerWebExchange exchange)
    判断是否为 GET 类型的请求,这里的 GET 类型是指通过 query 方式传递参数的请求类型。
    static boolean
    isJson(String contentType)
    判断请求体中的数据是否为 application/json
    static boolean
    isJson(org.springframework.web.server.ServerWebExchange exchange)
    判断请求体中的数据是否为 JSON
    static Boolean
    isPostTypeRequest(org.springframework.http.HttpMethod method, String contentType)
    判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。
    static Boolean
    isPostTypeRequest(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 请求体

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 构造器详细资料

    • ExchangeUtils

      public ExchangeUtils()
  • 方法详细资料

    • getRequestURI

      public static URI getRequestURI(org.springframework.web.server.ServerWebExchange exchange)
      读取 ServerHttpRequest 中的请求 URI
      参数:
      exchange - ServerWebExchange
      返回:
      请求路径
    • getRequestPath

      public static String getRequestPath(org.springframework.web.server.ServerWebExchange exchange)
      读取 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 - 请求 ServerHttpRequest
      headers - 新的请求头 HttpHeaders
      body - 新的请求体 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 - ServerWebExchange
      uri - 新的请求地址 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 - ServerWebExchange
      request - 新请求 ServerHttpRequest
      返回:
      新的 exchange ServerWebExchange
    • createNewExchange

      public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, URI uri)
      重新构建 ServerWebExchange
      参数:
      exchange - ServerWebExchange
      uri - 新的请求地址 URI
      返回:
      新的 exchange ServerWebExchange
    • createNewExchange

      public static org.springframework.web.server.ServerWebExchange createNewExchange(org.springframework.web.server.ServerWebExchange exchange, String requestBody)
      将修改后的请求体封装为新 Exchange 的统一方法
      参数:
      exchange - ServerWebExchange
      requestBody - 字符串类型的请求体
      返回:
      新的 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 - 请求 ServerWebExchange
      headers - 新的请求头 HttpHeaders
      body - 新的请求体 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 - 请求 ServerWebExchange
      modifier - 请求体修改器 RequestBodyModifier
      onFinish - 完成操作
      onError - 错误操作
      返回:
      Mono
    • isJson

      public static boolean isJson(String contentType)
      判断请求体中的数据是否为 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

      public static boolean isFormUrlencoded(String contentType)
      判断请求体中的数据是否为 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 - 请求类型 HttpMethod
      contentType - 内容类型
      返回:
      true 是 POST 类型,false 不是 POST 类型
    • isPostTypeRequest

      public static Boolean isPostTypeRequest(org.springframework.web.server.ServerWebExchange exchange)
      判断是否为 POST 类型的请求,这里的 POST 类型是指通过 RequestBody 方式传递参数的请求类型。POST 类型请求包括 POST 和 PUT
      参数:
      exchange - 请求对象 ServerWebExchange
      返回:
      true 是 POST 类型,false 不是 POST 类型