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

如何阻止Swagger自动填充传递给控制器的GUID参数

解决Swagger中GUID类型参数自动填充值的问题

你的ReserveInput类里,ItemId是Guid值类型,Swagger会自动生成默认的Guid示例填充输入框。要让输入框留空由用户手动输入,可采用以下两种方案:

方案一:将Guid改为可空类型(推荐)

把ItemId的类型改为Guid?,保留[Required]特性。这样Swagger会识别该字段为必填但可空,不会自动填充默认值,用户必须输入有效的Guid才能提交。

修改后的代码:

public class ReserveInput
{
    [Required]
    public Guid? ItemId { get; set; }
    [Required]
    public string Address { get; set; }
    [Required]
    public DateTime ReserveDate { get; set; }
}

[HttpPost]
[Route("ReserveItem")]
public IActionResult ReserveItem([FromBody] ReserveInput input)
{
    // 因[Required]验证,input.ItemId不会为null,可直接用input.ItemId.Value获取值
    // 按ItemId查找物品
    // 执行预订逻辑
}

方案二:用Swagger特性设置空示例

如果不想修改字段类型,可借助Swashbuckle的特性显式设置示例为空。先确保安装了Swashbuckle.AspNetCore.Annotations NuGet包,再修改代码:

using Swashbuckle.AspNetCore.Annotations;

public class ReserveInput
{
    [Required]
    [SwaggerSchema(Example = null)]
    public Guid ItemId { get; set; }
    [Required]
    public string Address { get; set; }
    [Required]
    public DateTime ReserveDate { get; set; }
}

两种方案对比:方案一从类型层面明确字段的必填性和可空性,后端处理更安全;方案二则无需改动原有数据结构,适合需要保持类型定义不变的场景。

内容的提问来源于stack exchange,提问作者user1263981

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 12:22:36