c# - 自定义 IRouteConstraint:返回自定义响应而不是 404[NotFound]
问题描述
我想创建一个自定义 IRouteConstraint 来检查参数值。如果失败,我想返回 404[BadRequest]ProblemDetails
作为正文。
像这样的东西;-)
public class CountryRouteConstraint : IRouteConstraint
{
private readonly List<string> _countryCodes = new() { "AF", "AX", "AL", "DZ", "AS", "AD", "AO" /*...*/ };
public bool Match(HttpContext context, IRouter route, string routeKey, RouteValueDictionary values, RouteDirection routeDirection)
{
values.TryGetValue(routeKey, out var value);
var country = (value as string ?? string.Empty).ToUpper();
// If a company is required: We assume a valid value as mandatory!
if (_countryCodes.Contains(country))
return true;
return new ProblemDetails
{
Status = (int)HttpStatusCode.BadRequest,
Title = $@"No valid country provided: ""{country}""",
Instance = context?.Request.Path
};
}
}
我怎样才能做到这一点?
解决方案
推荐阅读
- c# - 如何获取子属性的 PropertyDescriptor
- java - 引诱报告:引诱如何从不同的测试中保存/获取两个结果
- xamarin - 如何防止父滚动视图从手势捕获子滚动
- javascript - 从数组中同步删除值
- go - 如何从 Go 中的 Thrift Server 获取客户端 IP,thrift 版本 0.10.0?
- node.js - Express with Pug 模板:继承,如何在 Express 中使用不同的路由使 Block 工作?
- android - 如何使用 Espresso 测试记录器为以编程方式创建的视图创建 UI 测试
- c++ - 如何检查 CNG Windows API 返回符合 FIPS 的算法实现
- windows - 如何发布/发布 .Net Core 控制台应用程序?
- json - 使用 jq 向动态键添加值