xml
是作爲一種比較老的 數據傳輸手段,大部分都是傳遞 json
、form
、buffer
的,現代框架也都是支持這三種數據格式的,都不會自帶 xml
格式。
在做微信掃碼支付的時候,當支付成功了微信會給你發送 post
請求,這個時候處理請求就會發現 body = {}
+ query = {}
+ params = {}
,這個時候我的內心是崩潰的,啥參數也沒有。
查找了很多資料,都說參數就在 body
體內,可是我的 body
是一個空對象,最後參考了express
框架和一些其他的資料,終於決定通過兩個依賴來解決這個問題。
最終操作:
yarn add body-parser body-parser-xml
安裝完成依賴後修改入口文件 main.ts
import { NestFactory } from '@nestjs/core';
import { AppModule } from './app.module';
const bodyParser = require('body-parser');
require('body-parser-xml')(bodyParser);
(async () => {
const app = await NestFactory.create(AppModule);
app.use(bodyParser.xml());
await app.listen(9999);
})();
然後這個時候在進行一次支付,支付完成後微信請求過來的數據 body
體內就有一個 xml
對象,剩下的只需要把這個對象進行處理就好了,如:
@Post('bondPay/wechat')
async bondPayWechat(@Req() req): Promise<any> {
const { xml } = req.body;
const data: any = {};
for(const item in xml) {
data[item] = xml[item][0];
}
console.log(data)
}
最終終端打印結果爲:
最終大功告成!很多人寫這種東西都需要 線上地址
進行測試,但是我來悄悄咪咪的告訴大家有一種工具叫做 內網穿透工具
可以直接進行本地開發測試,指定端口就 ok 了!