我怎样才能让Swagger不问POST方法的id(在DB中创建实体)?
{ "id": 0, "name": "string", "quantity": 0, "typeId": 0, "brandId": 0 }
在我的SQL Server中有一个自动增量,所以我认为在前端没有必要输入ID,也不会有ID字段。但是可以让swagger不要显示ID吗?
ctrmrzij1#
创建一个专用的create dto:
public class CreateDto { public class Name { get; set;} public int Quantity { get; set;} ... }
并在控制器中从传入的CreateDto对象创建一个db实体的示例。
CreateDto
x6h2sr282#
如果您不需要在项目中的其他地方序列化模型,可以尝试使用JsonIgnore属性。我尝试了以下方法:
public class TestModel { public int Id { get; set; } public string Name { get; set; } [JsonIgnore] public string Hide { get; set; } }
结果:
ryoqjall3#
现在有一个更好的方法。有两件事你需要做1.使用Swashbuckle.aspNetCore.Annotations中找到的SwaggerSchema进行注解;
[SwaggerSchema(ReadOnly = true)] public int Id { get; set; }
1.在AddSwaggerGen中启用注解
builder.Services.AddSwaggerGen(options => { options.EnableAnnotations(); });
有关详细信息,请参阅文档
3条答案
按热度按时间ctrmrzij1#
创建一个专用的create dto:
并在控制器中从传入的
CreateDto
对象创建一个db实体的示例。x6h2sr282#
如果您不需要在项目中的其他地方序列化模型,可以尝试使用JsonIgnore属性。我尝试了以下方法:
结果:
ryoqjall3#
现在有一个更好的方法。有两件事你需要做
1.使用Swashbuckle.aspNetCore.Annotations中找到的SwaggerSchema进行注解;
1.在AddSwaggerGen中启用注解
有关详细信息,请参阅文档