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

时间:2018-10-11 22:14:31

标签: azure azure-api-management

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

我已经看到很多关于将SOAP服务公开为REST API的文章,但并非相反。

1 个答案:

答案 0 :(得分:0)

当您将SOAP API作为APIM中的REST时,它所做的就是创建一堆策略,用于动态处理请求/响应有效负载并将JSON转换为XML。即使没有向导来创建反向转换,也确实可以。

您将必须使用API​​M策略编写自己的转换逻辑。这是您需要做的几件事:

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进行请求。