代理 SOAP 服务

您正在查看 Apigee Edge 文档。
前往 Apigee X 文档
信息

学习内容

通过本教程,您将学会:

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

在本教程中,您将了解如何在基于 SOAP 的 Web 服务前面放置 Edge API 代理。

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

所需条件

创建代理

在此步骤中,您将让 Edge 生成位于 SOAP 服务前面的代理。SOAP API 代理有两种类型:

  • REST-SOAP-REST 代理类型会生成一个具有 SOAP 转换层的新 RESTful API。客户端会像调用其他 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 到 SOAP 到 REST

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

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

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

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

    除非您要自定义新的 API 代理(在本教程中,您不会这样做),否则这就是全部内容。您可以继续测试新的 API 代理。

经典边缘(私有云)

如需使用经典版 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 到 SOAP 到 REST

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

    目前,只需保持选中第一组操作即可。

    端口类型:DelayedStockQuoteSoap 选择所有三个 WSDL 操作。其他设置保持不变。

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

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

    除非您要自定义新代理(本教程中不会这样做),否则只需执行这些步骤。您可以继续测试新代理。

测试代理

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

  • ORG 是您在其中创建代理的 Edge 组织的名称。
  • ENV 是代理部署到的环境。
  • DOMAIN 对应于您使用的 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 到 SOAP 到 REST”代理 SOAP 服务时,Edge 会自动生成 OpenAPI 规范。您可以使用 OpenAPI 规范为 API 生成 API 文档。

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

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

额外学分:如何确定要使用哪些资源、动词和查询参数?

在测试 API 调用中,您在 c网址 调用中使用了特定的资源和查询参数来调用后端 SOAP 服务。但您如何自行了解这些信息呢?

资源和动词

在创建代理时,您在 API 代理向导中看到了 SOAP 操作如何映射到 API 动词和资源。但如果您没有记下这些信息,可以在创建代理后按以下步骤查找。

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

查询参数

选择 GetQuote 流后,点击图形化流程视图中的第一个政策。它应是一项“提取变量”政策,用于捕获预期会传递的查询参数:StockSymbolLicenseKey。(如果您在网上搜索 SOAP 服务,会找到有关传递 LicenseKey 的说明。)

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