2015-02-05 95 views
0

我一直在试验wso2 API Manager 1.8.0以将后端(http/post)系统公开为REST API。我能够使它工作,但我必须通过下面粘贴的服务总线源视图编辑API配置。我希望为所有使用API​​ Publisher发布的新API使用相同的模板,以确保每次创建API时都不必编辑服务总线源。wso2 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:[email protected]'))" 
 
          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:[email protected]'))" 
 
          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> 
 
      \t \t { 
 
      \t \t "apiName": "$1", 
 
      \t \t "apiVersion": "$2", 
 
      \t \t "runResponse": 
 
      \t \t \t { 
 
      \t \t \t \t "runId": "$3", 
 
      \t \t \t \t "runStart": "$4", 
 
      \t \t \t \t "runEnd": "$5", 
 
      \t \t \t \t "flowResponse": "$6", 
 
      \t \t \t \t "flowResult": "$7" 
 
      \t \t \t } 
 
      \t \t }    \t \t \t \t 
 
      \t </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

有似乎是旧版本有关API的模板API管理者的一些文档下<APIM_HOME>/repository/resources/api-templates/default_api_template.xml文件。

使用API​​ Manager 1.8.0,我无法找到相同的文档页面,但编辑velocity_template.xml可用于非原型API定义。

我仍然试图将我的要求纳入其中。

0

其实你想做一些改变你的消息。 APIM 1.8支持调解扩展。您可以在其中添加自己的进出和故障顺序,并在那里进行转换。此调解扩展支持全球和每api的基础。你可以在这里找到细节[1] ,所以如果你创建一个全局级别序列,它将被应用到所有apis。在你的情况下,你必须创建一个全局insequnce来添加基本的oauth相关的东西和一个全局的out序列来添加有效载荷工厂相关东西

1. https://docs.wso2.com/display/AM180/Adding+Mediation+Extensions