如何在招摇中请求有效负载中排除属性



我在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);
    }
}

客户TO看起来像

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

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

因此,API 的使用者在 POST 请求中传递 CustomerId = someInt,因为它是 EF Core Dal 中的标识属性,它会引发错误

Cannot insert value on Identity column...

这个错误是很明显和可以接受的,

我的要求是什么,如何让 Swagger 知道 CustomerId 是 不是 POST 请求中请求有效负载的一部分?

为Get & Post创建一个单独的DTO似乎是一个开销。

谢谢!!

对于此特定方案,只需使属性可为 null,然后按如下所示对其进行修饰:

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

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

但是,如果您发现自己需要更改多个不同的属性或添加/删除内容,只是为了请求或响应,那么@DarjanBogdan是正确的:您应该为每个属性使用不同的类。

相关内容

最新更新