wso2 api 管理器路径模式问题

wso2 api manager path pattern issue

我对我认为的简单 url 模式匹配有疑问,但看到了我创建的 API 的意外行为。

我设置了 API,当我放置 "URL Pattern" 时,我做了一些简单的事情,比如“/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 端点,而不仅仅是路径变量的值?

默认情况下,

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

  1. 使用以下内容创建自定义序列并将其保存为 .xml 文件。
<sequence xmlns="http://ws.apache.org/ns/synapse" name="TestSequence">
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
</sequence>
  1. 现在在发布者中编辑您的 API。在设计视图中,转到 "Message Mediation Policies" 部分并启用消息中介。现在添加 In Flow 并上传之前保存的序列。

您可以通过如下方式定义 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 创建新的 APIs 的突触文件时使用此模板。