如何使用 API Rest url 模板值到 WSO2 的调用模板

How to use API Rest url template value into call template at WSO2

我开始于:

<?xml version="1.0" encoding="UTF-8"?>
<api context="/echo/2" name="echo" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{echoque}">
        <inSequence/>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

而且我可以使用 get-属性("uri.var.echoque") 和 $ctx:uri.var.echoque 记录 echoque,但是如果我将值设置为字面量,它会起作用,所以我不知道如何使用...的uri模板 这是我的最后一个例子

<?xml version="1.0" encoding="UTF-8"?>
<api context="/echo/sound" name="echo" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{echoque}">
        <inSequence>
            <log>
                <property expression="get-property(&quot;uri.var.echoque&quot;)" name="Input"/>
            </log>
            <call>
                <endpoint>
                    <http method="get" uri-template="http://echotest.localhost/echo/{uri.var.sound}">
                        <suspendOnFailure>
                            <initialDuration>-1</initialDuration>
                            <progressionFactor>-1</progressionFactor>
                            <maximumDuration>0</maximumDuration>
                        </suspendOnFailure>
                        <markForSuspension>
                            <retriesBeforeSuspension>0</retriesBeforeSuspension>
                        </markForSuspension>
                    </http>
                    <property expression="$ctx:uri.var.echoque" name="uri.var.sound"/>
                </endpoint>
            </call>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>

谁能解释一下如何使用其余 api 中的变量? 我还尝试使用 json 类型的 paylodfactory {“输入: $1 } 并像 json 一样使用它:$.input 但没有...

以下应该有效。您不必使用单独的变量。直接使用call mediator里面的uri.var.echoque

<?xml version="1.0" encoding="UTF-8"?>
<api context="/echo/sound" name="echo" xmlns="http://ws.apache.org/ns/synapse">
    <resource methods="GET" uri-template="/{echoque}">
        <inSequence>
            <log>
                <property expression="get-property(&quot;uri.var.echoque&quot;)" name="Input"/>
            </log>
            <call>
                <endpoint>
                    <http method="get" uri-template="http://echotest.localhost/echo/{uri.var.echoque}">
                        <suspendOnFailure>
                            <initialDuration>-1</initialDuration>
                            <progressionFactor>-1</progressionFactor>
                            <maximumDuration>0</maximumDuration>
                        </suspendOnFailure>
                        <markForSuspension>
                            <retriesBeforeSuspension>0</retriesBeforeSuspension>
                        </markForSuspension>
                    </http>
                </endpoint>
            </call>
            <respond/>
        </inSequence>
        <outSequence/>
        <faultSequence/>
    </resource>
</api>