如何将传入查询参数传递到后端WSO2 API管理器

如何将传入查询参数传递到后端WSO2 API管理器,wso2,wso2-am,Wso2,Wso2 Am,我使用的是wso2 API管理器3.2,在我的API中有一些标题和查询参数 我的API以这种方式在URL中有一些路径变量 http://example.com/data/readsomeData/{entityId}/{someId} 对于path变量,我使用以下中介 <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/> 而且效果很

我使用的是wso2 API管理器3.2,在我的API中有一些标题和查询参数

我的API以这种方式在URL中有一些路径变量

http://example.com/data/readsomeData/{entityId}/{someId}
对于path变量,我使用以下中介

    <property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>

而且效果很好

我还更改了一些传入标题的名称。例如,传入的头是IN_头,我将其转换为OUT_头,我的后端需要OUT_头

我也使用这个中介

<property name="IN_HEADER" expression="get-property('transport', 'IN_HEADER')"/>
<property name="OUT_HEADER" expression="get-property('IN_HEADER')" scope="transport"/>
<property name="IN_HEADER" scope="transport" action="remove"/>

它也很好用

上面描述的给定API还有一些可选的查询参数(limit、max、min)。例如,如果我在我的API中使用limit=10,我必须得到10条记录,如果超出了limit,我只能得到一条记录。 在WSO2 API Manager Publisher中,我将上述查询参数定义为其他参数

问题是,当我使用每个查询参数时,得到的结果与不使用查询参数的结果相同。我只有一张唱片

我认为API管理器不会将查询参数传递给后端


我不知道这个问题是否与我使用的中介有关

您可以通过几种不同的方式来实现这一点,下面的示例也适用于3.2.0。 因为您删除了REST\u URL\u后缀,APIM也会删除查询参数。 因此,备选方案1:

您可以执行类似于对其他标题所做的操作。 获取查询参数并将其添加为标题以供进一步使用。(据我所知,$url速记在3.2.0中也应该可用-它通过名称获取查询参数。)


或者,您可以从URL中获取查询参数,并在删除后缀后将其放回原处

<property name="newUrlPostfix" expression="substring after($axis2:REST_URL_POSTFIX, '?')"/> 
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
<property name="REST_URL_POSTFIX" scope="axis2" expression="concat('?', $ctx:newUrlPostfix"/>


这对您有用吗?我忘了提到,我有三个查询参数,它们都是可选的,比如{entityId}/{someId}?limit=XX&from=YY&to=ZZ这里描述的不是可选参数@PubciI测试了{entityId}/{someId}?*但它不起作用@Pubci是否可以说明如何定义端点URL,以便将来自客户端的参数分配给端点?假设我从URL获取查询参数limit并将其放入limit中,就像现在这样如何将URL传递到后端@这个问题对我来说非常耗时。即使在wso2 api管理器文档上也没有足够的文档。传输作用域属性应自动显示为HTTP头,以便它们将被传递到后端,并且应在那里可见。通常,API manager的这个中介部分是EnterpriseIntegrator可以实现的精简版本。如果您正在寻找更多的docus,也许您可以在其中找到您需要的。
<property name="newUrlPostfix" expression="substring after($axis2:REST_URL_POSTFIX, '?')"/> 
<property name="REST_URL_POSTFIX" scope="axis2" action="remove"/>
<property name="REST_URL_POSTFIX" scope="axis2" expression="concat('?', $ctx:newUrlPostfix"/>