如何更新 pact jvm requestFilter 中的传入请求?
how to update the incoming request in pact jvm requestFilter?
我在 java 中有一个 spring 引导程序 API,它使用 pact-jvm 进行契约验证。
我们有一个新客户想要使用相同的 API 使用新路径,网关会处理这个问题,但这会导致协议出现问题,我想拦截请求并修改请求的路径新协议指向旧路径。
我试图在网上参考一些 material 并发现了这个:
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"
}
}
上面代码中的问题是我将 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)
}
}
我在 java 中有一个 spring 引导程序 API,它使用 pact-jvm 进行契约验证。 我们有一个新客户想要使用相同的 API 使用新路径,网关会处理这个问题,但这会导致协议出现问题,我想拦截请求并修改请求的路径新协议指向旧路径。 我试图在网上参考一些 material 并发现了这个: 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"
}
}
上面代码中的问题是我将 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)
}
}