代理 SOAP 服务

您正在查看的是 Apigee Edge 文档。
转到 Apigee X 文档
信息

学习内容

通过本教程,您将学会:

  • 从 WSDL 文件生成 Edge API 代理。
  • 了解 RESTful SOAP 代理类型和直通式 SOAP 代理之间的区别。

在本教程中,您将学习如何将 Edge API 代理置于基于 SOAP 的网络服务之前。

本教程说明了如何在基于 SOAP 的服务前面生成新的 RESTful API。虽然此处未作详细介绍,但您也可以生成接受 SOAP 载荷并将其传递给后端服务的直通代理。

所需条件

创建代理

在这里,您将让 Edge 生成代理,该代理将位于 SOAP 服务前面。SOAP API 代理有两种类型:

  • REST-SOAP-REST 代理类型会生成一个新的 RESTful API,其中包含到 SOAP 的转换层。客户端像调用其他 RESTful 服务一样调用该方法,并传递后端服务所需的查询参数。Edge 会将其转换为服务预期的 SOAP 载荷。
  • 直通式代理代理类型让客户端只需传入 SOAP 载荷。 这是一种让 SOAP 服务调用受益于 Edge 管理功能的方法。

Edge

如需使用 Edge 界面代理 SOAP 服务,请执行以下操作:

  1. 登录 apigee.com/edge
  2. 在左侧导航栏中,选择开发 > API 代理
  3. 点击 +代理
  4. 点击 SOAP 服务
  5. 在“代理详细信息”页面上,输入以下信息:

    字段 说明
    WSDL 源代码

    选择:网址

    复制以下 WSLD 网址,并将其粘贴到输入网址字段中:

    https://ws.cdyne.com/delayedstockquote/delayedstockquote.asmx?wsdl

    点击:验证

    Apigee Edge 获取 WSDL 文件并读取该文件,以发现 SOAP 服务支持的操作列表。

    名称

    保持不变:delayedstockquote

    这是您正在创建的 API 代理的名称。

    基本路径 保持不变:/delayedstockquote
    说明 (可选)添加说明,例如:股票报价 WSDL API 代理
  6. 点击下一步
  7. 常用政策页面的安全性:授权下,选择直通(无授权)
  8. 点击下一步
  9. WSDL 操作页面上,选择:REST to SOAP to REST

    选择代理类型后,Edge 将显示将为其生成 REST API 路径的操作列表。通过此列表,您可以从 WSDL 中的操作中进行选择(如果您有要查找的特定操作集)。请注意,该表还显示了 REST 客户端可用于调用后端 SOAP 服务的资源。

    页面上的所有其他选择则保持原样。

  10. 点击下一步
  11. 点击 Next,接受 Virtual Host 默认设置。
  12. 摘要页面的“可选部署”下,点击测试,然后点击创建和部署

    Edge 会生成一个 RESTful API 代理,并将其部署到 test 环境。它会根据 WSDL 确定服务支持的操作、输入参数等。Edge 会建议每项操作使用哪种 HTTP 方法。通常,Edge 会将操作转换为 GET 请求,这样做的好处是可以缓存。Edge 还会设置后端目标端点,该端点可能因 SOAP 操作而异。

    除非您要自定义新的 API 代理(并且不学习本教程),否则所有内容就介绍到这里。您可以继续测试新的 API 代理。

传统 Edge (Private Cloud)

如需使用传统版 Edge 界面代理 SOAP 服务,请执行以下操作:

  1. 登录 http://ms-ip:9000,其中 ms-ip 是管理服务器节点的 IP 地址或 DNS 名称。
  2. 在顶部导航栏中,依次选择 API > API 代理
  3. 点击 + API 代理
  4. 点击 SOAP 服务
  5. 在“代理详细信息”页面上,输入以下信息:

    字段 说明
    WSDL

    选择:示例网址

    然后选择:
    ...delayedstockquote.asmx?WSDL

    点击:验证

    Apigee Edge 获取 WSDL 文件并读取该文件,以发现 SOAP 服务支持的操作列表。

    代理名称

    输入:delayedstockquote

    这是您正在创建的代理的名称。

    代理基本路径说明 保留原样。
  6. 点击下一步
  7. 在 WSDL 页面上,进行以下选择:
    在此字段中 执行该操作
    API 代理类型

    选择:REST to SOAP to REST

    选择代理类型后,Edge 将显示将为其生成 REST API 路径的操作列表,如下所示。通过此列表,您可以从 WSDL 中的操作中进行选择(如果您拥有要查找的特定操作集)。请注意,该表还显示了 REST 客户端可用于调用后端 SOAP 服务的资源。

    现在,只需选中第一组操作即可。

    端口类型:DelayedStockQuoteSoap 选择全部三项 WSDL 操作。其他设置保持不变。

  8. 点击下一步
  9. 在“安全性”页面上,选择直通(无)
  10. 点击下一步
  11. 接受 Virtual Host 默认设置,然后点击 Next
  12. 在“构建”页面上,接受默认设置,然后点击构建和部署,让 Edge 开始生成代理。

    Edge 会生成一个 RESTful API 代理。它会根据 WSDL 确定服务支持的操作、输入参数等。Edge 会建议每项操作使用哪种 HTTP 方法。通常,Edge 会将操作转换为 GET 请求,这样做的好处是可以缓存。Edge 还会设置后端目标端点,该端点可能因 SOAP 操作而异。

    除非您要自定义这个新代理(并且不学习本教程),否则这就是全部内容。您可以继续测试新代理。

测试代理

要试用您创建的代理,请打开命令提示符并使用 c网址。输入以下命令,其中:

  • ORG 是您在其中创建代理的 Edge 组织的名称。
  • ENV 是指将代理部署到的环境。
  • Domains 对应于您正在使用的 Edge 实例。
curl "https://{ORG}-{ENV}.{DOMAIN}/delayedstockquote/quote?StockSymbol=GOOG&LicenseKey=0"

例如,如果您的组织是 docfood,环境是 test,并且您使用 Edge 企业云,则可以运行如下命令:

curl "https://docfood-test.apigee.net/delayedstockquote/quote?StockSymbol=GOOG&LicenseKey=0"

如果您为 StockSymbol 查询参数输入了 GOOG,则应获得 Alphabet Inc. C 类股票的当前价格。例如:

{  
   "GetQuoteResponse":{  
      "GetQuoteResult":{  
         "StockSymbol":"GOOG",
         "LastTradeAmount":819.55,
         "LastTradeDateTime":"2017-02-13T14:33:00",
         "StockChange":5.88,
         "OpenAmount":816.0,
         "DayHigh":820.96,
         "DayLow":815.49,
         "StockVolume":785064,
         "PrevCls":813.67,
         "ChangePercent":"+0.72%",
         "FiftyTwoWeekRange":"663.28 - 841.95",
         "EarnPerShare":27.88,
         "PE":29.4,
         "CompanyName":"Alphabet Inc.",
         "QuoteError":false
      }
   }
}

获取自动生成的 OpenAPI 规范

当您使用“REST to SOAP to REST”代理 SOAP 服务时,Edge 会自动生成 OpenAPI 规范。您可以使用 OpenAPI 规范为 API 生成 API 文档。

要获取 OpenAPI 规范,只需访问以下网址:

curl https://{ORG}-{ENV}.{DOMAIN}/delayedstockquote/openapi.json

额外提示:如何确定要使用的资源、动词和查询参数?

在测试 API 调用中,您在对后端 SOAP 服务的 c网址 调用中使用了特定资源和查询参数。但您自己是如何发现这一问题的呢?

资源和动词

在创建代理时,在 API 代理向导中,您看到了 SOAP 操作如何映射到 API 动词和资源。但是,如果您没有记下来,则可以在创建代理后通过以下方式获知。

在 API 代理的开发标签页的左侧导航窗格中,您会在“代理端点”下看到流程列表。点击您感兴趣的流程。例如,GetQuote 流程是一个很好的候选流程。然后,在“Code”窗格中查看 XML,该窗格中会在 <Condition> 元素中显示流的资源路径和动词:/quoteGET

查询参数

选择 GetQuote 流后,点击图形流视图中的第一个政策。它应该是“提取变量”政策,用于捕获预计要传递的查询参数:StockSymbolLicenseKey。(如果您在网络上搜索 SOAP 服务,该工具会告诉您要为 LicenseKey 传递什么内容。)

捕获的查询参数保存为变量,并供下一个政策使用来构建 SOAP 消息。