【问题标题】:Remove Model properties in WebAPI POST but keep for GET in Swagger在 WebAPI POST 中删除模型属性,但在 Swagger 中保留 GET
【发布时间】:2021-03-12 01:30:20
【问题描述】:

我有一些属性可以在数据库中插入或更新数据时捕获时间戳。我不希望这些属性在 Swagger 中的 POST 请求中可见,如何在 GET 请求中显示这些属性,而不是在 POST 端点中显示这些属性?

public class BaseEntity
    {
        /// <summary>
        /// Gets or Sets Date Created
        /// </summary>
        [DataMember(Name = "object_created", IsRequired = false)]
        public DateTime DateCreated { get; set; }

        /// <summary>
        /// Gets or Sets Date Updated
        /// </summary>
        [DataMember(Name = "object_updated", IsRequired = false)]
        public DateTime DateUpdated { get; set; }
    }

【问题讨论】:

  • 您可能需要将这些属性设为只读。在 OpenAPI 2.0/3.0 中,readOnly 表示此属性出现在 responses 中(例如 GET 响应)但不包含在 requests 中(例如 POST/PUT)。

标签: c# swagger asp.net-web-api2


【解决方案1】:

参见主题“隐藏属性不显示”: https://github.com/domaindrivendev/Swashbuckle.WebApi/issues/1230

另一种方式:您可以为此创建两个模型。我认为这样是最好的。

【讨论】:

  • 不幸的是,隐藏该属性意味着它会隐藏在 POST 和 GET 中,这是我不想要的。
  • 创建两个模型似乎太复杂了,但也许这是唯一的方法?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-17
  • 2019-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多