WSO2 如何创建自定义中介序列来提供静态内容

WSO2 How to create custom mediation sequence to serve static content

我正在尝试创建一个 "pass-through" WSO2 API 来提供一些静态服务 内部服务器上的文件到外部。据我了解,WSO2要求我在/{context}/{version}/{resourcePath}.

下配置多个{resources}

假设我的上下文和版本是 'files' 和 'v1' 我需要映射 这些外部路径到我后端服务器上的这些内部路径。

  • /files/v1/js/api.js -> /js/api.js
  • /files/v1/css/file.css -> /css/file.css
  • /files/v1/api/2.0/auth/signin -> /api/2.0/auth/signin

基本上我需要做的就是去掉前面的上下文和版本,所以我在 InSequence

中尝试了这个自定义调解序列
<sequence xmlns="http://ws.apache.org/ns/synapse" name="custom-seq">
  <log level="full">
    <property name="IN_MESSAGE" value="IN_MESSAGE"
  </log>
  <property name="resource_ep" 
            expression="get-property('axis2','REST_URL_POSTFIX')"/>
  <header name="To" expression="get-property('resource_ep')"/>
  <log level="custom">
    <property name="to" expression="get-property('To')"/>
  </log>
</sequence>

是否可以配置匹配整个目录树的resourcePath?

而不是:/files/v1/api/{ver}/{auth}/{signIn} 我想要/files/v1/api/**

我的问题是我有大约。提供文件的 6 个顶级目录,其中一些目录有 15 层深。

我能够用这个 In Flow Mediation 序列定义来解决它。

<?xml version="1.0" encoding="UTF-8"?>
<sequence xmlns="http://ws.apache.org/ns/synapse" name="custom-seq">
<property> name="resource_ep"
           expression="get-property('axis2', 'REST_URL_POSTFIX')"/>
 <switch source="get-property('axis2', 'REST_URL_POSTFIX')">
  <case > regex=".*/api.*">
    <log level="custom">
      <property name="My-Mediator" value="/api"/>
    </log>
    <header name="To" expression="get-property('resource_ep')"/>
  </case>
  <case regex=".*/js.*">
    <log level="custom">
      <property name="My-Mediator" value="/js"/>
    </log>
    <header name="To" expression="get-property('resource_ep')"/>
  </case>
  <default>
    <log level="custom">
      <property name="Tableau-Mediator" value="default (ignored)"/>
    </log>
  </default>
 </switch>
</sequence>

每个案例块都定义了一个我想通过其提供服务的顶级目录 /files/v1/(或者只是 /files/,如果我将 v1 设置为默认版本)。

默认块应该忽略其他所有内容。

我仍然需要调整我的客户端应用程序以将请求发送到

/files/v1/css/somedir/somefile.css

而不是

/css/somedir/somefile.css