今天学习了一下目前所在项目的网关是怎么实现的,使用的Spring Cloud Gateway
发现配置文件中有一个配置是:
spring:
cloud:
gateway:
predicate:
read-body:
enabled: true
查看了Spring的官网文档,没找到太有用处的描述,只看到了一句:
一开始以为是对ReadBodyPredicateFactory的使用,但此断言工厂本就有使用的方式:
predicates:
- Path=/**
- name: ReadBodyPredicateFactory
自己编写demo尝试使用read-body时,还会有提示信息:Cannot resolve configuration property 'spring.cloud.gateway.predicate.read-body.enabled'
所以read-body到底是用来做什么的呢
spring.cloud.gateway.predicate.read-body
是 Spring Cloud Gateway 的一个断言(Predicate)配置,用于读取请求体中的数据。
它的主要作用是允许我们在网关中对请求体进行处理,例如根据请求体中的某些参数或者数据来进行路由、过滤等操作。
具体来说,当我们需要根据请求体中的某些参数或者数据来进行路由或者过滤时,就可以使用 read-body
这个断言。
例如,我们可以根据请求体中的某个参数值来进行路由,或者根据请求体中的某个参数值来进行过滤。
需要注意的是,read-body
断言只能用于 POST、PUT、PATCH 等请求方法,因为这些请求方法才会包含请求体。
而对于 GET、DELETE 等请求方法,是没有请求体的,因此也就没有必要使用 read-body
断言。