首页 > 解决方案 > 通过 Azure API 管理将 REST API 公开为 SOAP

问题描述

我们有一组现有的 REST API (.NET Core)。我们需要将这些 API 公开为 SOAP 服务,希望通过使用 Azure API 管理。这可能吗?

我看过很多关于将 SOAP 服务公开为 REST API 的帖子,但反之则不然。

标签: azureazure-api-management

解决方案


当您在 APIM 中将 SOAP API 作为 REST 时,它所做的只是为操作创建一系列策略以动态处理请求/响应负载并将 JSON 转换为 XML。即使没有向导可以创建反向转换 - 这肯定是可能的。

您必须使用 APIM 策略编写自己的转换逻辑。以下是您需要的一些东西:

public enum SoapVersionLiteral
{
    Soap11,
    Soap12
}

public interface ISoapMessage
{
    SoapVersionLiteral Version { get; set; }

    string Action { get; set; }

    IEnumerable<ISoapHeader> Headers { get; set; }

    ISoapBody Body { get; set; }
}

public interface ISoapHeader
{
    XName Name { get;  }
    string Value { get; }
    Uri Actor { get;  }
    bool MustUnderstand { get; }
}

public interface ISoapBody
{
    XName Name { get; }
    XElement Contents { get; }
}
  • 您可以尝试在野外找到一些 WSDL,并将它们作为 SOAP 导入 APIM 中的 REST,以查看创建了哪些类型的策略来将 XML 转换为 JSON 以获取响应以及将 JSON 转换为 XML 以获取请求。

推荐阅读