gpt4 book ai didi

azure-api-management - 将 POST 转换为 GET Azure API 管理 Rest API

转载 作者:行者123 更新时间:2023-12-05 06:36:27 28 4
gpt4 key购买 nike

我正在使用 Azure API 管理 REST API 导入 WSDL 并将其转换为调用 SOAP 后端的 REST 端点。

但是,当您导入 WSDL 时,所有方法都作为 POST 导入(这是有道理的,因为您需要发送 soap 信封)。现在我想通过 REST API 将操作从 POST 转换为 GET(我可以通过门户完成)。

以前有人试过吗?如果试过,我应该调用哪个 API?

最佳答案

对于这种情况,我使用了公共(public) soap 服务: https://www.dataaccess.com/webservicesserver/numberconversion.wso?op=NumberToDollars

imported this SOAP service到 API 管理:

enter image description here

请求正文:

<?xml version="1.0" encoding="utf-8"?>
<Envelope xmlns="http://www.w3.org/2003/05/soap-envelope">
<Body>
<NumberToDollars xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.dataaccess.com/webservicesserver/">
<dNum>1</dNum>
</NumberToDollars>
</Body>
</Envelope>

NumberToDollars 操作必须读取 XML,将其转换为 JSON,并将数据传递给 GET 。 API。

出于测试目的,我创建了一个返回 200 的模拟操作: https://rfqapiservicey27itmeb4cf7q.azure-api.net/echo/200/test

<policies>
<inbound>
<base />
<set-variable name="num" value="@{
string xml = context.Request.Body.As<string>(preserveContent: true);
xml = Regex.Unescape(xml);

// Remove the double quotes
xml = xml.Remove(0,1);
xml = xml.Remove(xml.Length-1,1);

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);

var data = JObject.Parse(JsonConvert.SerializeObject(doc));
JObject envelope = data["Envelope"] as JObject;
JObject body = envelope["Body"] as JObject;
JObject numberToDollars = body["NumberToDollars"] as JObject;

return numberToDollars["dNum"].Value<string>();
}" />
<set-method>GET</set-method>
<set-backend-service base-url="https://rfqapiservicey27itmeb4cf7q.azure-api.net/echo/200/" />
<rewrite-uri template="@("/test?q=" + context.Variables.GetValueOrDefault<string>("num"))" copy-unmatched-params="false" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>

测试操作: enter image description here

跟踪日志: enter image description here

从 XML 生成的 JSON 文档:

{
"?xml": {
"@version": "1.0",
"@encoding": "utf-8"
},
"Envelope": {
"@xmlns": "http://www.w3.org/2003/05/soap-envelope",
"Body": {
"NumberToDollars": {
"@xmlns:xsi": "http://www.w3.org/2001/XMLSchema-instance",
"@xmlns": "http://www.dataaccess.com/webservicesserver/",
"dNum": "1"
}
}
}
}

关于azure-api-management - 将 POST 转换为 GET Azure API 管理 Rest API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49103525/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com