【问题标题】:How prevent some class properties from being returned from Web API?如何防止某些类属性从 Web API 返回?
【发布时间】:2020-04-01 14:25:32
【问题描述】:

我正在使用 Entity Framework Core 构建一个引用类库的 .NET Core Web API。我们是数据库优先的,因此可以预见会定期覆盖我们的数据类以刷新它们。

例如一个有 FirstName、LastName 和 Password 的 Employee 对象,如何防止 Password 属性与对象一起传回?

如果我需要操作数据类,是否必须记住每次删除/重新创建数据类时都要手动重新编辑?感谢您的帮助!

【问题讨论】:

  • 您的 API 序列化和传递的公开 View-Model 类不应与 Entity Framework 使用的 Data Model 类相同。跨度>

标签: asp.net asp.net-web-api .net-core entity-framework-core


【解决方案1】:

您应该使用数据传输对象 (DTO)。使用映射器填充自定义属性并将其发送到响应。你也可以试试这个(匿名类型):

var employee = ...get from db;

return Ok(new
{
    employee.FirstName,
    employee.LastName
});

【讨论】:

  • 因此,根据我希望调用客户端访问的内容,我应该基本上创建一个新对象(从我的数据上下文返回的完整对象)并且不包括我不想公开的属性?我可以这样做,但似乎需要很多管道。
  • 确实,采用架构会带来一些困难,但会使您的代码干净且可维护。但是您可以使用Anonymous Types 而无需创建新对象,正如我在答案中所示,如果您想要一个干净的代码,请使用和操作结果过滤器。
猜你喜欢
  • 2021-10-03
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多