作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要在我的 Azure API 管理策略表达式中添加电子邮件的正则表达式验证,但没有可用的适当文档。
是否可以在 Azure APIM 中进行 RegEx 验证?
最佳答案
这可以通过setting a variable来完成使用 C# regex代码。
该变量可以在 choose 中使用进一步处理的政策
正则表达式匹配的完整策略返回结果:
<policies>
<inbound>
<base />
<set-variable name="isEMailValid" value="@{
var pattern = @"^((([!#$%&'*+\-/=?^_`{|}~\w])|((?!.*\.\.)[!#$%&'*+\-/=?^_`{|}~\w][!#$%&'*+\-/=?^_`{|}~\.\w]{0,}[!#$%&'*+\-/=?^_`{|}~\w]))[@]\w+([-.]\w+)*\.\w+([-.]\w+)*)$";
var body = (JObject)context.Request.Body.As<JObject>(true);
var regex = new Regex(pattern);
if(regex.Match(body["email"].Value<string>()).Success)
{
return true;
}
return false;
}" />
<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["isEMailValid"] = context.Variables.GetValueOrDefault<bool>("isEMailValid");
return response.ToString();
}</set-body>
</return-response>
</inbound>
<backend>
<base />
</backend>
<outbound>
<base />
</outbound>
<on-error>
<base />
</on-error>
</policies>
请求有效:
POST https://rfqapiservicey27itmeb4cf7q.azure-api.net/sample/ipsum HTTP/1.1
Host: rfqapiservicey27itmeb4cf7q.azure-api.net
{ "email": "[email protected]"}
响应有效:
HTTP/1.1 200 OK
content-length: 28
content-type: application/json
date: Fri, 03 Feb 2023 07:15:32 GMT
vary: Origin
{"isEMailValid": true}
请求无效:
关于regex - 如何在 Azure API 管理策略表达式中添加正则表达式验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75332334/
我是一名优秀的程序员,十分优秀!