wso2 api经理路径模式问题

时间:2016-08-02 02:10:02

标签: wso2 wso2-am

我遇到的问题是我认为是一个简单的网址模式匹配,但看到我创建的API的意外行为。

我设置了API,当我放置“URL模式”时,我会做一些简单的事情,比如“/ player / {playerId}”

当我转到下一个屏幕输入端点信息时,我会引用文档中显示的路径变量,例如http://mycoolendpoint.com/playerInfo/{uri.var.playerId}

我最终看到的是整个URL模式被附加到我的端点。因此,在上文中,我看到的是http://mycoolendpoint.com/playerInfo/111

,而不是看到预期的http://mycoolendpoint.com/playerInfo/111/player/111

当我使用这种语法时,我是否设置了错误,它将整个URL模式附加到Sandbox和Production端点而不仅仅是路径变量的值?

2 个答案:

答案 0 :(得分:1)

默认情况下,API管理器的资源通常由API管理器附加到其端点URL。为避免这种情况,您可以按照以下说明进行操作,

  1. 使用以下内容创建自定义序列,并将其另存为.xml文件。
  2. <sequence xmlns="http://ws.apache.org/ns/synapse" name="TestSequence">
    <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
    </sequence>
    
    1. 现在在发布商中修改您的API。在设计视图中,转到&#34;消息调解策略&#34;部分和启用邮件中介。现在添加In Flow并上传以前保存的序列。

答案 1 :(得分:0)

有两种方法可以通过定义您的API来实现此目的。

1)像这样定义资源。

playerInfo/{playerId}

并像这样定义端点。

http://mycoolendpoint.com/

2)定义这样的资源。

/{playerId}

并像这样定义端点。

http://mycoolendpoint.com/playerInfo/

或者你也可以像@ycr提到的那样做。如果您想在不创建自定义序列文件的情况下对所有API进行更改,则可以在<APIM_HOME>/repository/resources/api_templates/velocity_template.xml文件的InSequence section内添加以下行。

<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>

当APIM创建新API的synapse文件时,使用此模板。