如何在Create方法上设置Swagger忽略id属性?C# ASP.NET核心Swagger

icnyk63a  于 2022-11-06  发布在  C#
关注(0)|答案(3)|浏览(238)

我怎样才能让Swagger不问POST方法的id(在DB中创建实体)?

{
  "id": 0,
  "name": "string",
  "quantity": 0,
  "typeId": 0,
  "brandId": 0
}

在我的SQL Server中有一个自动增量,所以我认为在前端没有必要输入ID,也不会有ID字段。但是可以让swagger不要显示ID吗?

ctrmrzij

ctrmrzij1#

创建一个专用的create dto:

public class CreateDto {

  public class Name { get; set;}
  public int Quantity { get; set;}
  ...
}

并在控制器中从传入的CreateDto对象创建一个db实体的示例。

x6h2sr28

x6h2sr282#

如果您不需要在项目中的其他地方序列化模型,可以尝试使用JsonIgnore属性。我尝试了以下方法:

public class TestModel
    {
        public int Id { get; set; }
        public string Name { get; set; }
        [JsonIgnore]
        public string Hide { get; set; }
    }

结果:

ryoqjall

ryoqjall3#

现在有一个更好的方法。有两件事你需要做
1.使用Swashbuckle.aspNetCore.Annotations中找到的SwaggerSchema进行注解;

[SwaggerSchema(ReadOnly = true)]
    public int Id { get; set; }

1.在AddSwaggerGen中启用注解

builder.Services.AddSwaggerGen(options =>
    {
        options.EnableAnnotations();
    });

有关详细信息,请参阅文档

相关问题