webapi 设置swagger上请求参数的默认值

1. 创建一个Config文件夹,再文件夹下创建一个类,我这点取名 DefaultValue.cs
using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;

namespace WebApiTest1.Config
{
    public class DefaultValue : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {
            if(schema == null)
            {
                return;
            }
            foreach (var item in schema.Properties)
            {  
          //如果是字符串类型,且默认值是null,将值设置为空
if(item.Value.Type == "string" && item.Value.Default == null) { item.Value.Default = new OpenApiString(""); //设置默认值为空 } } } } }

 2. Program.cs文件中配置

builder.Services.AddSwaggerGen(options =>
{
    options.SchemaFilter<DefaultValue>();
});

3. 定义的接口

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using WebApiTest1.Model;

namespace WebApiTest1.Controllers
{
    [Route("api/[controller]/[action]")]
    [ApiController]
    public class ValuesController : ControllerBase
    {

        [HttpPost]
        public string SearchUserInfo(SearchUsers req)
        {
            return "返回查询的信息";
        }
    }
}

4. SearchUsers.cs文件

namespace WebApiTest1.Model
{
    public class SearchUsers
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public char Sex { get; set; }
    }
}

 ----------------------------------------------------------------------------------第二种方式,通过特性的方式设置---------------------------------------------------------------------------------------------

namespace WebApiTest1.Model
{
    public class SearchUsers
    {
        public int Id { get; set; }
        [DefaultValue("张三")] //设置默认值是张三
        public string Name { get; set; }
        public char Sex { get; set; }
    }
}

2. 创建一个Config文件夹,再文件夹下创建一个类,我这点取名 DefaultValue.cs

using Microsoft.OpenApi.Any;
using Microsoft.OpenApi.Models;
using Swashbuckle.AspNetCore.SwaggerGen;
using System.ComponentModel;
using System.Reflection;

namespace WebApplication6.Config
{
    public class DefaultValue : ISchemaFilter
    {
        public void Apply(OpenApiSchema schema, SchemaFilterContext context)
        {
            if (schema == null)
            {
                return;
            }
            foreach (var item in schema.Properties)
            {
                // 通过特性的方式实现
                DefaultValueAttribute defaultValueAttribute = context.ParameterInfo?.GetCustomAttribute<DefaultValueAttribute>();
                if (defaultValueAttribute != null)
                {
                    item.Value.Example = (IOpenApiAny)defaultValueAttribute.Value;
                }
            }
        }
    }
}

 

posted @ 2024-05-31 22:47  龙卷风吹毁停车场  阅读(650)  评论(0)    收藏  举报