2017-09-13 26 views
1

我正尝试创建一个“传递”WSO2 API,以将内部服务器上的一些静态文件 提供给外部。据我了解,WSO2要求我在/{context}/{version}/{resourcePath}下配置多个{resources}WSO2如何创建自定义调解序列以提供静态内容

假设我的上下文和版本是'文件'和'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个级别。

回答

0

我能用这个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> 

每个case块定义,我想通过服务于顶级目录 /文件/ V1 /(或只/文件/如果我使V1默认版本)。

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

我还是要适应我的客户端应用程序发送请求到

/文件/ V1 /css/somedir/somefile.css

,而不是

/CSS/somedir/somefile .css