代码之家  ›  专栏  ›  技术社区  ›  Kgn-web

如何在swagger中排除请求负载中的属性

  •  0
  • Kgn-web  · 技术社区  · 6 年前

    ASP.Net Core 2.1 具有 EF Core 2.1

      public class CustomerController
    {
        public IActionResult Post([FromBody]CustomerTO customer)
        {
    
        }
    
        public IActionResult Get(int id)
        {
            var customer = _dal.GetCustomer(id);
            return Ok(customer);
        }
    }
    

    客户看起来像

    public class CustomerTO
    {
        public int CustomerId { get; set; }
        public string CustomerName { get; set; }
    
        //others
    }
    

    现在问题出现在夸张的文档中,POST的请求有效负载包括 CustomerId: 0 (但可选)

    因此,API的使用者在POST请求中传递CustomerId=someInt,作为其在EF Core Dal中的标识属性,它抛出错误

    Cannot insert value on Identity column...
    

    我的要求是什么?如何让傲慢的人意识到CustomerId是 不是POST请求中请求有效负载的一部分?

    谢谢!!

    1 回复  |  直到 6 年前
        1
  •  1
  •   Chris Pratt    6 年前

    对于这个特定的场景,您可以简单地使属性为空,然后按如下方式对其进行修饰:

    [JsonProperty(NullValueHandling = NullValueHandling.Ignore]
    public int? CustomerId { get; set; }
    

    然后,如果它有一个值,它将出现,否则它将不是JSON对象的一部分。