You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET中如何修改Swagger的DateTime示例值(实体类不可修改)

不修改实体类前提下修改Swagger中Date字段的示例格式

完全可行,不需要修改类库中的Msg类,通过Swashbuckle的过滤器机制就能实现,下面提供两种常用方案:

方案一:全局修改Msg类的Swagger Schema(Schema Filter)

这种方法会全局调整所有使用Msg类的接口中date字段的示例值和格式说明,适合需要统一规范该类展示效果的场景。

  1. 创建自定义Schema过滤器类
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using YourClassLibraryNamespace; // 替换为Msg类所在的类库命名空间

public class MsgSchemaFilter : ISchemaFilter
{
    public void Apply(OpenApiSchema schema, SchemaFilterContext context)
    {
        // 匹配目标实体类Msg
        if (context.Type == typeof(Msg))
        {
            // 找到Swagger中驼峰命名的date属性
            if (schema.Properties.TryGetValue("date", out var dateProperty))
            {
                // 设置自定义示例值
                dateProperty.Example = new OpenApiString("2023-07-27");
                // 可选:明确标注格式为日期(非日期时间),让Swagger显示更准确的格式提示
                dateProperty.Format = "date";
            }
        }
    }
}
  1. 在Swagger配置中注册过滤器
    如果是.NET 6+的Program.cs:
builder.Services.AddSwaggerGen(c =>
{
    // 添加自定义Schema过滤器
    c.SchemaFilter<MsgSchemaFilter>();
    // 其他Swagger配置项(如文档标题、版本等)
});

如果是.NET 5及更早版本的Startup.cs(在ConfigureServices方法中):

services.AddSwaggerGen(c =>
{
    c.SchemaFilter<MsgSchemaFilter>();
    // 其他Swagger配置项
});

方案二:针对单个接口修改请求体示例(Operation Filter)

如果只需要调整某一个特定接口的请求体示例,不影响其他使用Msg类的接口,用这种方法更精准。

  1. 创建自定义Operation过滤器类
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

public class MsgOperationFilter : IOperationFilter
{
    public void Apply(OpenApiOperation operation, OperationFilterContext context)
    {
        // 筛选目标接口:替换为你的控制器和动作名称(比如"OrderController.CreateOrder")
        var targetAction = "YourControllerName.YourActionName";
        if (context.ApiDescription.ActionDescriptor.DisplayName.Contains(targetAction))
        {
            // 获取接口的JSON请求体配置
            if (operation.RequestBody?.Content.TryGetValue("application/json", out var jsonContent) == true)
            {
                // 直接设置完整的请求体示例
                jsonContent.Example = new OpenApiObject
                {
                    ["region"] = new OpenApiString("string"),
                    ["date"] = new OpenApiString("2023-07-27")
                };
            }
        }
    }
}
  1. 注册过滤器
    同样在AddSwaggerGen中添加:
builder.Services.AddSwaggerGen(c =>
{
    c.OperationFilter<MsgOperationFilter>();
    // 其他Swagger配置
});

两种方案都不需要改动类库中的Msg类,仅在你的ASP.NET Web项目中实现即可,重启项目后Swagger文档就会显示修改后的示例值。

内容的提问来源于stack exchange,提问作者D.J. Elkind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 20:32:50