我一直在尝试使用wso2 API Manager 1.8.0将后端(http / post)系统公开为REST API。我能够使它工作,但我必须通过下面粘贴的Service Bus源视图编辑API配置。我希望使用与使用API Publisher发布的所有新API相同的模板,以确保我们不必在每次创建API时都编辑服务总线源。
请建议您使用的任何选项..
<inSequence>
<script language="js" key="transform_script" function="buildQueryString"/>
<property name="uri.query" expression="get-property('queryString')"/>
<filter source="$ctx:AM_KEY_TYPE" regex="PRODUCTION">
<then>
<property name="Authorization"
expression="fn:concat('Basic ', base64Encode('testuser:testuser@1'))"
scope="transport"/>
<send>
<endpoint name="testuser--AddNumbers_APIsandboxEndpoint_0">
<http method="POST"
uri-template="https://testhost:8443/test/http/6731cc67-3850-4b9b-b486-62cf2a664b46?${uri.query}"/>
</endpoint>
</send>
<bam>
<serverProfile name="bam-profile">
<streamConfig name="org_wso2_apimgt_statistics_destination" version="1.0.0"/>
</serverProfile>
</bam>
</then>
<else>
<property name="Authorization"
expression="fn:concat('Basic ', base64Encode('testuser:testuser@1'))"
scope="transport"/>
<send>
<endpoint name="testuser--AddNumbers_APIsandboxEndpoint_0">
<http method="POST"
uri-template="https://testhost:8443/test/http/6731cc67-3850-4b9b-b486-62cf2a664b46?${uri.query}"/>
</endpoint>
</send>
<bam>
<serverProfile name="bam-profile">
<streamConfig name="org_wso2_apimgt_statistics_destination" version="1.0.0"/>
</serverProfile>
</bam>
</else>
</filter>
</inSequence>
<outSequence>
<payloadFactory media-type="json">
<format>
{
"apiName": "$1",
"apiVersion": "$2",
"runResponse":
{
"runId": "$3",
"runStart": "$4",
"runEnd": "$5",
"flowResponse": "$6",
"flowResult": "$7"
}
}
</format>
<args>
<arg evaluator="xml" expression="get-property('apiName')"/>
<arg evaluator="xml" expression="get-property('apiVersion')"/>
<arg evaluator="json" expression="$.runResponse.runReturn.item[0].value"/>
<arg evaluator="json" expression="$.runResponse.runReturn.item[3].value"/>
<arg evaluator="json" expression="$.runResponse.runReturn.item[4].value"/>
<arg evaluator="json" expression="$.runResponse.runReturn.item[5].value"/>
<arg evaluator="json" expression="$.runResponse.runReturn.item[6].value"/>
</args>
</payloadFactory>
<property name="messageType" value="application/json" scope="axis2"/>
<send/>
</outSequence>
答案 0 :(得分:0)
旧版API Manager似乎有一些关于<APIM_HOME>/repository/resources/api-templates/default_api_template.xml
文件下的API模板的文档。
使用API Manager 1.8.0,我找不到相同的文档页面,但编辑velocity_template.xml适用于非原型API定义。
我仍在尝试将我的要求纳入其中。
答案 1 :(得分:0)
实际上你想做一些为你的消息做一些转换。 APIM 1.8支持中介扩展。您可以在其中添加自己的输入,输出和故障序列,并在那里进行转换。此调解扩展支持全局和每个api。你可以在这里找到详细信息[1] 因此,如果您创建一个全局级别序列,它将应用于所有apis。在您的情况下,您必须创建一个全局不安来添加基本的oauth相关的东西和一个全局输出序列来添加有效负载工厂相关的东西
1。https://docs.wso2.com/display/AM180/Adding+Mediation+Extensions