0x01 背景
笔者最近在使用 Nest.js 开发服务端程序,遇到了一些需要处理 XML 的场景,搜遍了网络上发现没有比较优雅的方式,于是摸索后将过程整理出来。
0x02 研究
Google 搜索 nest handle xml
的第一个结果是一篇中文文章:
Nest 中处理 XML 类型的请求与响应
但是照猫画虎了一番,发现 TS 总是报错,可能是 body-parser-xml 实现得不算很优雅,而且对 TS 支持得不够好,就放弃了。
Nest.js 底层框架默认是 Express,搜索得知默认会使用 body-parser
来处理请求,但是不支持,所以第一步首先要修改支持 application/xml
的 **Content-Type,**配合 Nest 的 middleware,我们可以封装一层,只针对单个 module 来使用。
同时对比了一下 XML 的处理模块,发现 fast-xml-parser ⭐️⭐️最多,所以决定使用它来进行 XML 和 JSON 间的相互转换。
0x03 编码
好,上代码~,首先我们创建一个 middleware,使用如下命令:
nest g middleware xml
Nest CLI 会生成 xml.middleware.ts
,编写如下代码:
import {