我有一个自定义验证属性
假设我有一个实现ValidationAttory的HelloWorld类。然后我将此属性应用于我的API中的一个字段。
[HelloWorld]
public string FirstName { get; set; }
当我生成Swagger UI时,我得到一个JSON OpenAPI规范,模型显示每个字段的属性,如下所示:
如果我添加了一个必需的标记,如果我使用诸如RegularExpression/Range/StringLength之类的属性,则会显示一个星号,文本会指定这一点。然而,我想用我自己的描述让别人知道自定义验证。
有可能吗?
任何帮助都将不胜感激。我花了一整天的时间研究DocumentFilter/SchemaFilter/OperationFilter,但找不到任何好的文档或示例。
你可以这样做:
>
创建自定义验证属性,例如UniqueAttribute
public class UniqueAttribute : ValidationAttribute { ... }
将此属性应用于模型特性
[Unique]
public string Name { get; set; }
实现ISchemaFilter接口扩展
public class AddUniquenessDescriptionFilter : ISchemaFilter
{
public void Apply(OpenApiSchema schema, SchemaFilterContext context)
{
var attr = context.MemberInfo?.CustomAttributes.Where(x =>
x.AttributeType.Name == nameof(UniqueAttribute))
.FirstOrDefault();
if (attr is not null)
{
schema.Extensions.Add("isUnique", new OpenApiBoolean(true));
}
}
}
并在启动时使用扩展
builder.Services.AddSwaggerGen(options =>
{
options.SchemaFilter<AddUniquenessDescriptionFilter>();
});
结果如下:招摇文档
下面是一个完整的示例:自定义ValidationAttribute
我试图使用OperationFilter,但上不支持它。Net Framework 4.1。
我必须使用过滤器来修改文档(我相信这是使用was x扩展)
我正在从事一个包含如下代码的项目:如何将具有自定义ID的文档添加到firestore(Angular) 当我要尝试这个应用程序时,它总是崩溃。但是代码都是一样的。 我在LogCat中得到的错误是: 无效的文档引用。文档引用必须有偶数个段,但用户有1个 我的完整代码如下: 我希望“user\u id”是文档id,而不是Firestore生成的另一个id。 有人能帮忙吗?提前谢谢你。
我正试图改变大摇大摆的基本路线。目前我有 当我从swagger发送请求时,请求将转到,但服务返回。 当我通过邮递员发送的请求时,它就可以工作了。 因此api注册为,swagger只是将基础添加到它的顶部,如果请求发送到swagger UI将无法工作 但问题是现在可以在上获得swagger文档,而不是。因为我们在上有所有其他服务文档,所以这是没有用的。 是否有任何方法可以添加基本文件,并且仍然可以访
我有一些不应该实例化的带有自定义注释的类(抽象类,它只是实际bean的子组件)。但是在这些类之上,在运行时,在上下文初始化阶段,我想在应用程序上下文中添加额外的bean。 因此,基本上我需要扫描类路径,处理结果,并将新bean引入curent应用程序上下文。 似乎是spring-mvc、spring-tasks和spring-integration在做这件事(我试着从源代码中学习--没有运气) 我
搜索很好,它在工作,我正在过滤的交易类型(出售或出租)和房间数量在每个房地产。 但是我的JSON响应缺少很多字段,包括ACF。例如:{ “id”:149,“post_author”:“2”,“post_date”:“2016-03-03 23:53:39”,“post_date_gmt”:“2016-03-03 23:53:39”,“post_content”:“”post_title“:”opo
我想添加“from”(date)来响应datepicker输入,但到目前为止,我有一些奇怪的行为。 我的代码: 到目前为止,我试过: 和 但这两种解决方案都将我的日期从“2020年9月14日16:43”转变为“从周一9月14 2020 17:19:38格林尼治标准时间0400(留尼汪岛)”,这是不必要的行为,因为我绝对想要法语日期。任何想法?谢啦
我有一个用java编写的Maven JAX RS项目,使用enuncicate在每次构建时自动生成文档。到目前为止,它运行良好——他为我的项目中的所有RESTendpoint生成api文档。 现在我也用有用的jdoc写了一些util类——但是这些类不是endpoint——所以,expertion不会包括它们。 有没有办法告诉enunicate,他应该用一些额外类的jdoc生成额外的文档?我认为应该