SpringCloud-Gateway(谓词Header)

37 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

前言

关于 Gateway 中的谓词解释主要在 SpringCloud-Gateway(谓词) - 掘金 (juejin.cn) 这篇文章中有讲解,有配图展示所有的谓词,也有谓词中 Query 的使用方式。

谓词Header

Header 的作用是:表示请求头中必须包含的内容,如果请求头中不包含对应的内容则不进行转发,它的语法和我们之前使用 Query 的语法一样。
比如要设置两个请求头时要怎么办,在Gateway配置中其实很简单,就配置两遍Header就可以了,如果请求头中只包含一个请求头的参数名,那么直接配置一个就可以了,如果还需要设置该参数名的值则需要添加 , 号再把值写到**,** 号后面即可,案例如下:

image.png

按照上面的配置,如果请求的时候请求头没有包含 Connection 参数,并且它的值不等于 keep-alive,那么 Gateway 就不会转发该请求。

例如:我们请求一个接口正常情况下返回一个字符串 one,请求方式和请求头如下

image.png

image.png

这样的情况下我们是可以正常访问的,并且返回对应的字符串
如果当我们把Gateway 配置中的 keep-alive 随便加点东西,例如改成 keep-alive-test 然后我再进行访问发现页面是访问不了的,因为参数值没有符合我们配置的预期,所以不会转发我们当前请求。

image.png

注意:当我们需要设置请求头的时候一定要注意不要写错,特别是请求值得时候,这里如果写错了之后发现一直请求不成功到时候问题会比较难找