簡體   English   中英

如何在azure api管理策略表達式中查看請求體是null?

[英]How to check request body is null in azure api management policies expression?

我嘗試像這樣檢查請求正文。

<set-variable name="isBody" value="@{
    bool rtn_result = false;
    if (context.Request.Body == null)
    {
        rtn_result = true;
    }
    return rtn_result;
}" />

但是 'rtn_result' 總是返回false

我按照文件做了,他們告訴我

“context.Request Body:如果請求沒有正文,則為 IMessageBody 或 null。”

我錯了什么?

什么是正確的事情?
我應該怎么辦?

謝謝。

你的if條件沒有意義。
如果沒有正文,它返回true

請將其更改為:

if (context.Request.Body != null)
{
  rtn_result = true;
}

完整的政策:

<policies>
    <inbound>
        <base />
        <set-variable name="isBody" value="@{
            bool rtn_result = false;
            if (context.Request.Body != null)
            {
                rtn_result = true;
            }
            return rtn_result;
        }" />
        <return-response>
            <set-status code="200" reason="OK" />
            <set-header name="Content-Type" exists-action="override">
                <value>application/json</value>
            </set-header>
            <set-body>@{   
                var response = new JObject();
                response["hasBody"] = context.Variables.GetValueOrDefault<bool>("isBody");
                return response.ToString();
            }</set-body>
        </return-response>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

身體結果:
在此處輸入圖像描述

沒有身體的結果:
在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM