【发布时间】:2013-04-08 10:07:04
【问题描述】:
如何动态设置端点地址?
我在运行时在属性中设置了端点地址,需要将端点地址的URI替换为其值。
如何用这个值设置地址的URI值?
【问题讨论】:
标签: dynamic wso2 uri wso2esb endpoint
如何动态设置端点地址?
我在运行时在属性中设置了端点地址,需要将端点地址的URI替换为其值。
如何用这个值设置地址的URI值?
【问题讨论】:
标签: dynamic wso2 uri wso2esb endpoint
您可以像这样创建端点
<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”标头并使用默认端点。检查this post 以获取示例。
【讨论】:
使用header mediator 将“收件人”地址标头设置为您从分配的属性中提取的值。
【讨论】:
这个方法对我很有效。
我需要创建波纹管动态网址
http://localhost:8787/{动态参数}
endpoint url里面是这样的
http://localhost:8787/{uri.var.servicepath}
将“test”变量设置为我的动态参数(如果您需要设置表达式值,请设置它)。在属性调解器中设置“测试”值。(我做了这个内部代理服务)
<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参数。Ex-:
http://{uri.var.hostname}:{uri.var.port}/{uri.var.servicepath}
【讨论】: