wso2 API Manager - 如何使用模板发布API?

时间:2015-02-05 23:38:53

标签: json api wso2 wso2-am

我一直在尝试使用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>

2 个答案:

答案 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