通过 Azure API 管理将 REST API 公开为 SOAP

Expose REST API as SOAP via Azure API Management

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

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

当你在 APIM 中将 SOAP API 作为 REST 时,它所做的只是为操作创建一堆策略来动态处理 request/response 有效负载并转换 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 对于请求。