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
我正在尝试创建一个 "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