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 因此,为了避免这种情况,您可以按照以下说明进行操作,
- 使用以下内容创建自定义序列并将其保存为 .xml 文件。
<sequence xmlns="http://ws.apache.org/ns/synapse" name="TestSequence">
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
</sequence>
- 现在在发布者中编辑您的 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 的突触文件时使用此模板。
我对我认为的简单 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 因此,为了避免这种情况,您可以按照以下说明进行操作,
- 使用以下内容创建自定义序列并将其保存为 .xml 文件。
<sequence xmlns="http://ws.apache.org/ns/synapse" name="TestSequence">
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
</sequence>
- 现在在发布者中编辑您的 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 的突触文件时使用此模板。