【问题标题】:Can we map the version value in the WSO2 Managed API endpoint URL?我们可以在 WSO2 托管 API 端点 URL 中映射版本值吗?
【发布时间】:2018-12-13 09:07:55
【问题描述】:

我正在创建一个带有一些上下文路径和 v1 版本的 API:

然后我尝试提供指向后端的沙盒和生产端点。目标是:

专业人士: http://localhost:9090/myapi/{version}

SB: http://localhost:8080/myapi/{version}

也就是说我想使用后端路径中的版本字段。

但是我收到以下错误:

沙盒端点 URI 无效。请参阅 HTTP 端点文档 WSO2 ESB 的详细信息。

生产端点 URI 无效。请 有关详细信息,请参阅 WSO2 ESB 的 HTTP 端点文档。

有什么办法吗?

更新:

我找到了以下文章 (https://docs.wso2.com/display/AM260/Map+the+Parameters+of+your+Backend+URLs+with+the+API+Publisher+URLs),它解释了如何使用 uri.var 前缀映射值。所以现在在我的端点中我有:

专业人士: http://localhost:9090/myapi/{uri.var.version}

SB: http://localhost:8080/myapi/{uri.var.version}

现在的问题是它的值是空的。

【问题讨论】:

  • 只是为了更好地阐明需求,您期望通过使用变量定义版本有什么好处?
  • stackoverflow.com/questions/53720241/…相关。您的解决方案确实有助于删除上下文路径,但不是版本。使用这种替换 {version} 将允许我使用像 WSO2/myapp/v1/api/customers 这样的 URL,它将被转换为带有变量替换的后端调用 /api/v1/customers。
  • 我对这个要求还不是很清楚。如果您尝试更改版本在上下文路径中的显示位置,您可以尝试设置“/wso2/myapp/{version}/api”之类的上下文。我没有看到使用 API Manager API 版本设置后端服务版本的优势。
  • 问题与另一个问题相同,考虑到 wso2 api 版本与 URL 中的后端版本相同,我正在寻找一种不同的方法来使用变量替换
  • 我刚刚发现了这个寻找相同方法的问题:stackoverflow.com/questions/48832995/… 但它也没有针对这个特定问题的答案。

标签: wso2 wso2-am


【解决方案1】:

您可能必须创建一个 In Flow 中介策略才能将 API 版本获取到端点 URL。

例如,您可以创建一个名为“VersionSequence.xml”的文件并将以下内容添加到该文件中。此序列中介将允许将 REST API 版本存储到名为“uri.var.version”的属性中。

<?xml version="1.0" encoding="UTF-8"?>
<sequence name="VersionSequence" trace="disable" xmlns="http://ws.apache.org/ns/synapse">
    <property expression="$ctx:SYNAPSE_REST_API_VERSION" name="uri.var.version"/>
    <log level="custom">
        <property expression="get-property('uri.var.version')" name="APIVersion"/>
    </log>
</sequence>

然后您可以在 API Manager 中实施 API 时将此中介策略上传到“启用消息中介”部分的In-Flow .之后,您可以如下设置端点,该端点将从您在中介流中创建的“uri.var.version”属性获取版本。

http://localhost:9090/myapi/{uri.var.version}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-07
    相关资源
    最近更新 更多