VonaJS: 序列化/数据脱敏(上)

news/2025/11/14 11:48:31/文章来源:https://www.cnblogs.com/zhennann/p/19221416

序列化/数据脱敏

VonaJS 提供了序列化能力,可以对 API 的响应数据进行转换,比如:排除密码字段,对 Email 和 Mobile 进行脱敏处理,等等

先介绍通用的序列化机制,再介绍一组工具函数。通过工具函数可以更加便利的使用序列化能力

创建Serializer Transform

比如,在模块 demo-student 中创建一个 Serializer Transform: upper,将字段值转化为大写

1. Cli命令

$ vona :create:bean serializerTransform upper --module=demo-student

2. 菜单命令

::: tip
右键菜单 - [模块路径]: Vona Bean/Serializer Transform
:::

Serializer Transform定义

export type TypeSerializerTransformUpperValue = string;export type TypeSerializerTransformUpperData = unknown;export type TypeSerializerTransformUpperResult = TypeSerializerTransformUpperValue;export interface ISerializerTransformOptionsUpper extends IDecoratorSerializerTransformOptions {}@SerializerTransform<ISerializerTransformOptionsUpper>()
export class SerializerTransformUpper extends BeanBase {async transform(value: TypeSerializerTransformUpperValue,_data: TypeSerializerTransformUpperData,_options: ISerializerTransformOptionsUpper,): Promise<TypeSerializerTransformUpperResult> {return value.toUpperCase();}
}
  • TypeSerializerTransformUpperValue: 定义字段类型
  • TypeSerializerTransformUpperData: 定义外层 object 对象类型
  • TypeSerializerTransformUpperResult: 定义结果类型
  • transform: 将字段值转为大写

使用Serializer Transform

比如学生 APIfindOne方法返回的结果类型是EntityStudent。下面将EntityStudentname字段转为大写

1. 开启序列化

需要为 API 开启序列化

class ControllerStudent {@Web.get(':id')@Api.body(v.optional(), v.object(EntityStudent))
+ @Serializer.enable()async findOne(id) {return await this.scope.service.student.findOne(id);}
}
  • @Serializer.enable: 开启序列化

2. 设置字段

class EntityStudent {
+ @Serializer.transform('demo-student:upper')@Api.field(v.title($locale('Name')), v.default(''), v.min(3))name: string;
}
  • @Serializer.transform: 传入 Serializer Transform 名称demo-student:upper

Filter参数

可以为 Serializer Transform 传入 Filter 参数。系统先执行 Filter 函数,根据结果来控制当前 Serializer Transform 是否需要执行

比如,如果当前用户名是admin则不执行upper的转换逻辑

class EntityStudent {@Serializer.transform('demo-student:upper', {
+   filter(this: VonaContext) {
+     return this.user.name !== 'admin';
+   },})@Api.field(v.title($locale('Name')), v.default(''), v.min(3))name: string;
}

Serializer Transform参数

可以为 Serializer Transform 定义参数,通过参数更灵活的配置转换逻辑

比如,为 Serializer Transform upper定义first参数,用于控制是否只将首字母转为大写

1. 定义参数类型

export interface ISerializerTransformOptionsUpper extends IDecoratorSerializerTransformOptions {
+ first?: boolean;
}

2. 提供参数缺省值

@SerializerTransform<ISerializerTransformOptionsUpper>({
+ first: false,
})

3. 使用参数

export interface ISerializerTransformOptionsUpper extends IDecoratorSerializerTransformOptions {first?: boolean;
}@SerializerTransform<ISerializerTransformOptionsUpper>({first: false,
})
class SerializerTransformUpper {async transform(value: TypeSerializerTransformUpperValue,_data: TypeSerializerTransformUpperData,options: ISerializerTransformOptionsUpper,): Promise<TypeSerializerTransformUpperResult> {
-   return value.toUpperCase();
+   return options.first ? toUpperCaseFirstChar(value) : value.toUpperCase();}
}

4. 使用时指定参数

可以指定@Serializer.transform的参数

class EntityStudent {
+ @Serializer.transform('demo-student:upper', { first: true })@Api.field(v.title($locale('Name')), v.default(''), v.min(3))name: string;
}

5. App Config配置

可以在 App Config 中配置 Serializer Transform 参数

src/backend/config/config/config.ts

// onions
config.onions = {serializerTransform: {'demo-student:upper': {first: true,},},
};

6. 参数优先级

使用时指定参数 > App Config配置 > 参数缺省值

资源

  • Github:https://github.com/vonajs/vona
  • 文档:https://vona.js.org

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/965218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年公交站台制造厂推荐指南:行业前十强排名分析

摘要 2025年公交站台行业持续发展,环保、智能化和定制化成为主流趋势,推动城市公共交通设施升级。本文基于市场调研和用户口碑,综合评测2025年公交站台制造厂前十强排名,为采购方和市政部门提供参考表单。排名涵盖…

2025年比较好的10吨地磅TOP品牌厂家排行榜

2025年比较好的10吨地磅TOP品牌厂家排行榜行业背景与市场趋势随着中国制造业的持续发展和物流行业的快速增长,地磅作为重要的称重设备,市场需求呈现稳定上升态势。根据中国衡器协会最新发布的《2024-2025年中国衡器行…

Offload flow APR GC

Offload flow APR GC下面我给你一个 精确、可落地、可以快速判断:到底是: (1)网卡 Offload(GRO/LRO/TSO/RXCSUM/TXCSUM)问题? (2)Flow 流量过大(队列/CPU软中断高)? (3)ARP GC 或邻居缓存问题?并且告诉…

RAG项目实战:基于图文PDF的多模态问答RAG项目(一)调研阶段

参考文章: [1] 来自工业界的知识库 RAG 服务(二),RagFlow 源码全流程深度解析 - 易迟的博客 | Bryan Blog [2] 赢得企业RAG挑战赛的秘诀 —— 冠军方案剖析与感悟 [3] https://abdullin.com/ilya/how-to-build-best-…

2025年评价高的压滤机厂家推荐及采购参考

2025年评价高的压滤机厂家推荐及采购参考行业背景与市场趋势随着环保政策的日益严格和工业废水处理需求的持续增长,中国压滤机行业迎来了快速发展期。据中国环保产业协会最新数据显示,2024年中国压滤机市场规模已达到…

2025年靠谱的麦稻草浆挤浆机TOP实力厂家推荐榜

2025年靠谱的麦稻草浆挤浆机TOP实力厂家推荐榜行业背景与市场趋势随着全球环保意识的提升和循环经济政策的推进,麦稻草浆作为可再生资源在造纸、生物质能源等领域的应用日益广泛。根据中国造纸协会最新数据,2024年我…

深入解析:Flutter鸿蒙开发

深入解析:Flutter鸿蒙开发pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", …

2025新加坡金融科技节:看AI驱动的金融转型策略与“中国方案”

11月12日至14日,全球金融科技盛会——新加坡金融科技节(Singapore Fintech Festival)在新加坡博览中心举行。作为全球最具影响力的行业盛会之一,本次活动以“未来十年金融的科技蓝图”为主题,吸引了来自全球的科技…

国产化Excel开发组件Spire.XLS教程:Python将列表导出为CSV文件(含一维/二维/字典列表)

对于 Python 开发者而言,将 Python 列表转换为 CSV 格式是高频需求——无论是导出应用数据、生成报表,还是准备分析数据集,都离不开这一操作。Spire.XLS for Python 凭借直观可靠的方法简化了这一过程,无需依赖 Mi…

2025年评价高的连续式台车炉厂家最新推荐权威榜

2025年评价高的连续式台车炉厂家最新推荐权威榜行业背景与市场趋势随着制造业转型升级步伐加快,热处理设备作为工业生产的核心装备之一,其市场需求持续增长。据中国热处理行业协会最新统计数据显示,2024年我国热处理…

【2025-11-13】乡土人情

20:00人生啊,是这样不可预测,没有永恒的痛苦,也没有永恒的幸福。生活像流水一般,有时是那么平展,有时又是那么曲折。——路遥昨晚母亲收到亲戚的消息说我二姑丈走了。我问她要不要回老家一趟送一下最后一程,母亲…

.Net10(2025-11-11正式版)与win7/.Net8兼容性测试

.Net10(2025-11-11正式版)与win7/.Net8兼容性测试。 结论:.Net10 WinForms功能与Win7兼容。 .Net10 SDK 与VS2022兼容。 .Net10/.Net8/.Net6 Runtime互不兼容。

2025 最新杭州办公室出租公司推荐!涵盖生态化服务、定制化空间及增值服务优选指南杭州租办公室/杭州租赁办公室/杭州办公室租赁公司推荐

引言 数字经济浪潮下,企业对办公空间的需求已从单纯物理场所升级为集空间、服务、产业资源于一体的生态载体。然而市场中虚假房源、服务脱节、隐性收费等乱象频发,让企业选址面临诸多困扰。本次榜单依托国际办公空间…

软件测试— 测试分类 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

2025年知名的Lanny阀组比例阀厂家推荐及选购指南

2025年知名的Lanny阀组比例阀厂家推荐及选购指南行业背景与市场趋势随着工业自动化水平的不断提升,流体控制技术在制造业中的应用日益广泛。作为流体控制系统的核心部件,Lanny阀组比例阀的市场需求持续增长。据《202…

2025年知名的游乐设备PC管用户好评厂家排行

2025年知名的游乐设备PC管用户好评厂家排行行业背景与市场趋势随着全球游乐设备市场的持续扩张,中国作为世界最大的游乐设备生产国和消费国之一,行业规模已突破千亿元大关。据中国游乐设备行业协会最新数据显示,202…

2025 最新隔层纸厂家权威推荐榜:玻璃 / 防静电 / PCB / 防潮 / 电路板隔层纸优质企业综合排行

在电子信息、金属加工、珠宝制造等领域高速发展的背景下,隔层纸作为保障产品品质的核心包装材料,市场需求持续扩大,但行业乱象仍存:硫含量超标、规格混乱、售后缺失等问题频发,给采购方带来诸多困扰。本次榜单由国…

2025年湖南正规1688代运营公司权威推荐榜单:1688公司代运营/长沙1688代运营服务/长沙1688代运营源头公司精选

面对1688平台日益激烈的竞争,湖南企业正积极寻求专业代运营服务,以在数字化转型浪潮中抢占先机。 随着2025年1688平台算法升级和流量成本攀升,湖南本地企业正面临“曝光高、转化低”的普遍困境。 专业数据显示,202…

2025年知名的南京应急租发电机厂家最新推荐排行榜

2025年知名的南京应急租发电机厂家最新推荐排行榜行业背景与市场趋势随着中国城市化进程加速和工商业持续发展,电力需求呈现爆发式增长。根据中国电力企业联合会最新数据显示,2024年全国电力缺口预计达到4500万千瓦,…

鸿蒙应用开发之三方库的使用

三方库基本使用 1.如何获取三方库 目前提供了两种途径获取开源三方库:● Gitee三方库资源汇总:https://gitee.com/openharmony-tpc/tpc_resource ● OpenHarmony三方库中心仓:https://ohpm.openharmony.cn2. 常用三…