Azure API管理策略(如何进行重写-uri)



我是Azure API管理的新手。我正在构建一个将更改初始请求url的策略。如何从body中提取insurer_id并将其传递到后端。

{
"insurer_name": "Tony",
"insurer_id": "12345",
"comments": "This is test",
}

mybackend.com/api/rerelationship/approve/{insurer_id}

我知道我必须将id提取为JObject,将其存储在变量中,然后重写uri。但我不确定如何在Azure策略中实现这一点。举个小例子会很有帮助。

谢谢

您必须从请求主体读取insurer_id并将其设置为变量。

<set-variable name="insurerId" value="@{
var body = context.Request.Body.As<JObject>(true);
return body["insurer_id"].Value<string>();
}" />

此变量可用于重写uri:

<rewrite-uri template="@("/api/relationship/approve/" + context.Variables.GetValueOrDefault<string>("insurerId") copy-unmatched-params="false" />

完整的政策:

<policies>
<inbound>
<base />
<set-variable name="insurerId" value="@{
var body = context.Request.Body.As<JObject>(true);
return body["insurer_id"].Value<string>();
}" />
<rewrite-uri template="@("/api/relationship/approve/" + context.Variables.GetValueOrDefault<string>("insurerId") copy-unmatched-params="false" />
<set-backend-service base-url="https://mybackend.com" />
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>

最新更新