c# - 使用 .NET 5 Web API(字段级访问)有条件地从 dto 中排除/包含属性
问题描述
我正在开发一个带有默认System.Text.Json
模型绑定的 .NET 5 Web Api。对于几个 dto,我需要这样的东西:
public class MyDto
{
public string Name { get; set; }
public string PublicDetails { get; set; }
[IncludeForRoles("admin", "staff")]
public string InternalDetails { get; set; }
}
如果具有“admin”或“staff”以外的角色的用户调用返回上述 dto 的端点,则应在模型绑定上忽略属性“InternalDetails”,而不是将其添加到序列化 dto。有没有标准的方法来做到这一点?如果没有,我该如何手动实现此行为?
解决方案
有一个[JsonIgnore]
属性接受一个条件,如果属性为空或默认,则忽略它们。
假设您将知道控制器中的角色,如果他们具有相关角色,则仅获取 InternalDetails 信息,如果没有,则将其保留为 null。这也减少了查询时间,因为您没有获得不需要的信息。
推荐阅读
- node.js - 如何从云函数调用同步子函数
- phaser-framework - 如何使用 Phaser 3 使画布响应?
- html - 如何在 Angular 4 中使用 addHTML
- reactjs - 在 next.js + firebase 托管 pwa 应用程序上获取 service-worker 时出现 404 错误
- ios - 解码json时出错
- php - 同一页面上的 API 和数据库调用
- c# - 对于我的数据插入方法,我如何检查从数据库中提取的数据中的值是否正确传递或是否传递?
- javascript - 实现 Vuex 模块后,我所有的 getter 和 mutation 都停止工作
- javascript - 移动到网页的第一个“默认”焦点
- php - 后端:是否可以从数据库中获取 css 背景(url)中的图像位置?