作为我的API代理的一部分,我想将名为search的目标资源映射到代理资源超级搜索。 因此,如果我的基本网址是myproxy / v1.2,并且我创建了资源超级搜索,那么我希望修改网址如下
MYPROXY / V1.2 /超搜索&安培; apikey = 123
到
MYPROXY / V1.2 /搜索&安培; apikey = 123
从阅读文档here和this question看来,这样做的方法就是在目标端点的预流程中使用JavaScript调出来简单地修改URL通过做
context.targetRequest.url.replace('/super-search', '/search')
不幸的是,URL似乎没有包含资源名称,因此无需替换。
或者我可以做
context.setVariable('target.copy.pathsuffix', false);
context.targetRequest.url += '/search';
但这似乎放弃了我的所有查询参数!
如何只更改目标上的资源名称而不影响请求的其他元素?
答案 0 :(得分:0)
尝试使用Javascript调用重置目标预流中的目标网址
context.setVariable("target.url",context.getVariable("target.url").replace('/super-search', '/search'));
答案 1 :(得分:0)
// Disable copying super-search into the output
context.setVariable('target.copy.pathsuffix', false);
//Build the target url manually: root + /search? + params list
var url = context.getVariable('target.url') + "/search?" + context.getVariable('request.querystring');
//Write the target URL back
context.setVariable('target.url', url);
应该有一种比这更好的方法 - 如果你知道它是什么,请发帖!