0

我在 java 中有一个 spring boot API,它使用 pact-jvm 进行协议验证。我们有一个新客户端,他想使用新路径使用相同的 API,网关将负责处理,但这会导致协议出现问题,我想拦截请求并修改新协议的请求路径以指向到老路。我试图在网上参考一些材料,发现: https ://medium.com/dazn-tech/pact-contract-testing-dealing-with-authentication-on-the-provider-51fd46fdaa78

下面的代码打印请求的更新值,但协议仍然失败并出现 404 错误,就好像它仍在使用新路径一样

requestFilter = { req ->
                println "incoming request : $req"
                if ("$req".contains('/new-context') ) {
                    req = "$req".replace('/new-context', '/old-context')
                    println "updated request : $req"
                }
            } 
4

1 回答 1

1

上面代码中的问题是我将 req 视为字符串并进行操作,但它是一个 HttpRequest 对象,下面的代码为我解决了这个问题:

requestFilter = { req ->
                def uriText = req.getURI()
                println "incoming request uri : $uriText"
                if ("$uriText".contains('/new-context') ) {
                    def uriTextNew = "$uriText".replace('/new-context', '/old-context')
                    println "updated request uri : $uriTextNew"
                    URI newURI = new URI(uriTextNew)
                    req.setURI(newURI)
                }
            }
于 2020-04-30T02:21:01.193 回答