C# .NetCore Swagger ISchemaFilter 注入示例值、描述

目录

[1. 创建自定义Schema过滤器](#1. 创建自定义Schema过滤器)

[2. 注册自定义Schema过滤器](#2. 注册自定义Schema过滤器)

[3. 配置具体的属性或类型(可选)](#3. 配置具体的属性或类型(可选))

[4. 运行并查看结果](#4. 运行并查看结果)


如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

在使用Swagger(特别是通过Swashbuckle库在.NET Core/ASP.NET Core项目中)时,我们经常需要为模型的属性提供示例值或描述,以便更好地展示API文档。这可以通过实现ISchemaFilter接口来完成,该接口允许我们在Swagger生成过程中自定义模型属性。

以下是如何实现ISchemaFilter接口来注入示例值和描述的步骤:

1. 创建自定义Schema过滤器

首先,创建一个类来实现ISchemaFilter接口。在这个类中,你可以定义如何修改模型的Schema。

using Swashbuckle.AspNetCore.SwaggerGen;

using Microsoft.OpenApi.Models;

using System.Collections.Generic;

using System.Linq;

public class ExampleSchemaFilter : ISchemaFilter

{

public void Apply(OpenApiSchema schema, SchemaFilterContext context)

{

// 你可以在这里添加逻辑来设置默认的示例值和描述

// 比如,为所有字符串类型的属性添加示例值和描述

if (context.Type == typeof(string))

{

schema.Example = "示例字符串"; // 设置示例值

schema.Description = "这是一个示例字符串描述"; // 设置描述

}

// 你可以根据需要为其他类型或属性设置示例值和描述

}

}

2. 注册自定义Schema过滤器

在Startup.cs或Program.cs文件中注册你的自定义Schema过滤器。确保在添加Swagger服务时加入你的过滤器。

对于Startup.cs (ASP.NET Core 3.x 或更早版本)

public void ConfigureServices(IServiceCollection services)

{

services.AddSwaggerGen(c =>

{

c.SchemaFilter<ExampleSchemaFilter>(); // 注册自定义Schema过滤器

});

}

对于Program.cs (ASP.NET Core 5.x 或更新版本)

builder.Services.AddSwaggerGen(c =>

{

c.SchemaFilter<ExampleSchemaFilter>(); // 注册自定义Schema过滤器

});

3. 配置具体的属性或类型(可选)

如果你想为特定的属性或类型设置示例值和描述,可以在Apply方法中添加条件判断。例如,只对某个特定类型或属性名设置:

public void Apply(OpenApiSchema schema, SchemaFilterContext context)

{

if (context.Type == typeof(MyCustomType)) // 针对特定类型

{

schema.Example = new MyCustomType { /* 设置示例值 */ }; // 设置示例对象

schema.Description = "这是一个自定义类型的描述"; // 设置描述

}

else if (context.PropertyName == "SpecificProperty") // 针对特定属性名

{

schema.Example = "特定属性的示例值"; // 设置示例值

schema.Description = "这是一个特定属性的描述"; // 设置描述

}

}

4. 运行并查看结果

运行你的应用程序并访问Swagger UI,你应该能看到模型属性上的示例值和描述。这有助于API消费者更好地理解如何使用你的API。

通过上述步骤,你可以灵活地为你的Swagger文档中的模型属性添加示例值和描述,从而提高API文档的可用性和易用性。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。

相关推荐
海天鹰2 小时前
C#:object.ShortcutKeys 不支持非功能单独按键
c#
下页、再停留2 小时前
【C#桌面客户端系列学习-10】连接SQLite数据库
数据库·c#·visual studio
RobinDevNotes12 小时前
一套代码发布到十几个平台:Cocos入门速览
typescript·c#·游戏开发
阿松爱学习15 小时前
【Unity开发】监听Scene场景事件
unity·c#
信也科技布道师21 小时前
把 Swagger 变成联调工作台:Swagger Pro 工程实践
swagger
天天代码码天天1 天前
屏幕翻拍满是彩色条纹?用 C# + Vulkan 做了一个去摩尔纹工具,支持单图与文件夹批量
c#·去摩尔纹
2501_930707781 天前
使用C#代码在 Word 文档中添加、插入或删除页面
开发语言·c#·word
淡海水1 天前
03-03-架构篇-SGen GC架构解析
unity·架构·c#·gc·sgen
曹牧2 天前
C#:输入的字符串格式不正确
c#