如何动态设置端点地址?
我在运行时在属性中设置了端点地址,并且需要将端点地址的 URI 替换为其值。
如何使用此值设置地址的 URI 值?
您可以创建您的端点,例如
<endpoint xmlns="http://ws.apache.org/ns/synapse" name="MyEndpoint">
<http uri-template="{uri.var.full}?f={uri.var.f}{+uri.var.extra}" method="put">
</http>
</endpoint>
然后在调用端点'MyEndpoint'之前设置属性..要为端点解析的属性必须以uri开头。
我还发现,如果你在属性名称前加上一个 +,它不会对它进行 URI 编码,所以它对于动态创建参数很方便。否则对于已知参数,你可以像上面那样为参数 f 做
所以..像
<property name="uri.var.full" value="http://jarhedz.com/viewtopic.php"/>
<property name="url.var.f" value="2"/>
<property name="uri.var.extra" value="&t=39"/>
<send>
<endpoint key="MyEndpoint"></endpoint>
</send>
应该带你到网址http://jarhedz.com/viewtopic.php?f=2&t=39
(顺便说一句,如果您使用的是网络编辑器,它会抱怨 & .. 它的 buggy .. 将其保存为
&
.. 并将其保存为 & 或使用 javascript 设置属性)
使用 Header meditaor 设置“to”标头并使用默认端点。查看此帖子以获取示例。
使用标头调解器将“To”地址标头设置为您从分配的属性中提取的值。
这种方法对我来说是正确的。
我需要创建波纹管动态网址
http://localhost:8787/ {动态参数}
端点url里面是这样的
http://localhost:8787/ {uri.var.servicepath}
将“测试”变量设置为我的动态参数(如果需要设置表达式值,请设置它)。在属性调解器内设置“测试”值。(我做了这个内部代理服务)
<property name="uri.var.servicepath" scope="default" type="STRING" value="test"/>
创建端点
在这里我创建了 HTTP 端点
<endpoint name="ServiceEP" xmlns="http://ws.apache.org/ns/synapse">
<http method="post" uri-template="http://localhost:8787/{uri.var.servicepath}"/>
</endpoint>
然后将此端点添加到您的代理服务或 API 中
<send>
<endpoint key="ServiceEP"/>
</send>
最后你的代理看起来像这样
<inSequence>
<property name="uri.var.servicepath" scope="default" type="STRING"
value="test"/>
<send>
<endpoint key="SurepayVASAppsEP"/>
</send>
</inSequence>
像这样您可以更改每个 url 参数。例如:
http://{uri.var.hostname}:{uri.var.port}/{uri.var.servicepath}