gpt4 book ai didi

azure - 无法使用 Azure API 管理中的返回响应策略返回响应

转载 作者:行者123 更新时间:2023-12-03 06:30:43 25 4
gpt4 key购买 nike

我有这样的情况:在出站中,我将检查 GET API 的响应,这是 aAPI 策略所在的位置。如果正文有一个实体状态键,其值为 0 或 1,如果为 0,则输出简单消息,否则需要发送请求到另一个 API 端点,即 POST API。

我使用的 API 策略如下:

<set-variable name="id" value="" />
<set-variable name="newRequest" value="@(context.Request.Body?.As<JObject>
(preserveContent: true))" />
<choose>
<when condition="@(context.Response.StatusCode == 200 &&
(int)context.Response.Body?.As<JObject>(true)["entityStatus"] == 1)">
<send-request mode="new" timeout="20" response-variable-name="id" ignore-error="false">
<set-url>@($"https://api.dev/external/workrequest/wr")</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-header name="Authorization" exists-action="override">
<value>@(context.Request.Headers.GetValueOrDefault("Authorization","scheme param"))</value>
</set-header>
<set-body>@{ var document = (JObject)context.Variables["newRequest"];
return document?.ToString();
}</set-body>
</send-request>
<return-response response-variable-name="id">
<set-status code="200" reason="OK" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>@((((IResponse)context.Variables["id"]).Body.As<JObject>()).ToString())</set-body>
</return-response>
</when>
<when condition="@(context.Response.StatusCode == 200 && (int)context.Response.Body?.As<JObject>(true)["entityStatus"] == 0)">
<return-response>
<set-status code="500" reason="VOID" />
<set-header name="Content-Type" exists-action="override">
<value>application/json</value></set-header>
<set-body>The record is void</set-body>
</return-response>
</when>
<otherwise />

当entityStatus为0时,它返回的响应很好,但当entityStatus为1时,它返回400错误。错误如下:

{
"type": "https://httpstatuses.io/400",
"title": "Bad Request",
"status": 400,
"traceId": "00-317b53ba7a76f19b6153ca6ab14c5190-e9c27cf9162e2414-00"
}

我只需要来 self 向其发送请求的 POST API 的响应,我该如何做到这一点?

最佳答案

我得到了一个解决方案,我使用下面的变量来获取请求正文:

<set-variable name="newRequest" value="@(context.Request.Body?.As<JObject>(preserveContent: true))" />

我使用以下方法更改了它:

set-variable name="newRequest" value="@(context.Response.Body.As<JObject>(preserveContent: true))" />

关于azure - 无法使用 Azure API 管理中的返回响应策略返回响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75260946/

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