C#을 사용하는 Azure API Management 고급 정책 - I
조건 및 Ip 필터 정책과 고급 C# 코드 내부 정책을 수행할 수 있는 MSDN의 다음this article을 통해 수행할 수 있습니다.
이제 먼저 API 관리 정책 내에서 Rest Api 호출을 수행하는 방법을 살펴보겠습니다.
다음 코드는 시간 제한을 설정할 수 있고 응답 변수 이름과 오류를 무시할 수 있는 send-request 요소를 보여줍니다.
<send-request mode="new" timeout="300" response-variable-name="resdata" ignore-error="false">
그런 다음 set-url 요소는 요청을 처리해야 하는 Api의 URL을 설정합니다.
<set-url>https://apiendpoint.com/isipallowed/check</set-url>
그런 다음 set-method 요소는 GET, POST, PUT, PATCH와 같은 메서드 유형을 업데이트하는 데 사용됩니다.
<set-method>POST</set-method>
그런 다음 set-header 요소는 요청의 헤더를 설정하는 데 사용됩니다. 이 예제에서는 json 콘텐츠로 POST 요청을 처리할 것이므로 값이 application/json인 Content-Type 헤더를 추가해야 합니다.
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
set-body 요소는 요청 시 전송할 json 콘텐츠를 제공하는 데 사용됩니다.
<set-body>
<value>@{
var body = "{ /"ipvalue/" : @context.Request.IpAddress }";
return body;
}
</value>
</set-body>
전체 send-request 요소는 이제 아래와 같습니다.
<send-request mode="new" timeout="300" response-variable-name="resdata" ignore-error="false">
<set-url>https://apiendpoint.com/isipallowed/check</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>
<value>@{
var body = "{ /"ipvalue/" : @context.Request.IpAddress }";
return body;
}
</value>
</set-body>
</send-request>
이제 Choose 및 when 조건을 사용하여 보낸 IP가 목록에 있고 응답 코드가 200인지 확인합니다. 찾지 못하면 IP를 차단해야 합니다.
<choose>
<when condition="@(((IResponse)context.Variables.GetValueOrDefault<IResponse>
("resdata")).StatusCode != 200)">
<--- your policy -->
</when>
</choose>
IP를 차단하기 위해서는 위의 태그 안에 다음과 같은 IP 필터 정책을 추가해야 합니다.
<ip-filter action="forbid">
<address>@(context.Request.IpAddress)</address>
</ip-filter>
이제 전체 정책은 아래 코드와 같습니다.
<policies>
<inbound>
<base />
<send-request mode="new" timeout="300" response-variable-name="resdata" ignore-error="false">
<set-url>https://apiendpoint.com/isipallowed/check</set-url>
<set-method>POST</set-method>
<set-header name="Content-Type" exists-action="override">
<value>application/json</value>
</set-header>
<set-body>
<value>@{
var body = "{ /"ipvalue/" : @context.Request.IpAddress }";
return body;
}</value></set-body>
</send-request>
<choose>
<when condition="@(((IResponse)context.Variables.GetValueOrDefault<IResponse>
("resdata")).StatusCode != 200)">
<ip-filter action="forbid">
<address>@(context.Request.IpAddress)</address>
</ip-filter>
</when>
</choose>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
Reference
이 문제에 관하여(C#을 사용하는 Azure API Management 고급 정책 - I), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ssanjeevi/azure-api-management-advanced-policies-using-c-i-3eop텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)