0

こんにちは、json 本体値による azure api 管理にレート制限を適用しようとしています。そのようなルールがあります。

<rate-limit-by-key calls="6" renewal-period="180" counter-key="@(context.Request.Body.As<JObject>()["phoneNumber"].ToString())" increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 300)" />

しかし、レート制限が機能していません。

4

1 に答える 1

0

私のテストは成功しました。

リクエスト本文:

{
   "phoneNumber": "+1234"
}

ポリシー:

    <inbound>
      <base />
      <rate-limit-by-key calls="6" renewal-period="180" counter-key="@(context.Request.Body.As<JObject>()["phoneNumber"].ToString())" increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 300)" />
      <return-response>
        <set-status code="200" reason="OK" />
        <set-body />
      </return-response>
    </inbound>

return-responseはテスト用にのみ使用されます。

数回試行した後の応答本文:

{
  "statusCode": 429,
  "message": "Rate limit is exceeded. Try again in 174 seconds."
}

これはあなたの実装とどう違うのですか?
別の Request-Body がありますか?

于 2021-01-05T09:54:48.400 に答える