c# - 如何在 Swashbuckle 中显示我的模型中使用的自定义注释?
问题描述
我们在代码中使用 JetBrains 注释来定义对象模型的可空性行为。默认情况下,我无法在使用Swashbuckle.AspNetCore v5.0.0-rc5实现的 Swagger UI 中看到这些,所以我假设默认情况下不支持这些。有没有办法添加这个功能?
仅供参考,我使用的是 ASP.NET Core WebApi 3.1。
例如:
public class Person {
[NotNull]
public Id PersonId{get; set;}
[CanBeNull]
public Address Address {get;set;}
}
解决方案
创建一个自定义模式过滤器,例如(使用您的逻辑对其进行扩展):
public class AssignPropertyRequiredFilter : ISchemaFilter
{
public void Apply(Schema schema, SchemaFilterContext context)
{
var requiredProperties = context.SystemType.GetProperties()
.Where(x => x.IsDefined(typeof(NotNullAttribute)))
.Select(t => char.ToLowerInvariant(t.Name[0]) + t.Name.Substring(1));
if (schema.Required == null)
{
schema.Required = new List<string>();
}
schema.Required = schema.Required.Union(requiredProperties).ToList();
}
}
然后注册它
services.AddSwaggerGen(cfg => cfg.SchemaFilter<AssignPropertyRequiredFilter>());
推荐阅读
- ssl - SSL_write default behavior
- php - Vimeo API upload video and bypass temp file on the server
- java - configure Hystix circuit breaker for different threshold limits based on status codes
- python - Why my visual studio code is not using pip package manager
- bash - How to use =~ in bash
- ios - Can't connect to BLE Peripheral in some iOS devices
- c# - Android design time annotations (@Size, @IntRange etc.) equivalent in .NET
- powershell - Powershell Reg.GetValue 为实际值“ffffffff(十六进制)/ 4294967295(十进制)”提供输出为“-1”
- url - Share a shape using Google Maps URL's
- python - 在 python 中调整图像大小,以便可以避免被拉伸