如下图,这是一个简单的基础服务,有两条线路,第一条规定了固定出参,使用js的直接编写出参;第二条是通过数据库查询获取数据;
那么把第二条获取的固定数据,以编写的模式写在第一个条中,那么出参不管调用条都是应该是相同的,通过soupui工具测试,结果也是如预料的一样,但这样的出参结果真的一样吗?
答案是否定的,我们通过监控系统去看数据的出参;
左边为线路1,右边为线路2,虽然他们长得很像,但还是有本质上的区别,编码类型不一样,由js代码编写的出参是GBK编码,而直接从数据库获取则是UTF-8。 要点一:js通过该next.text=xxxx; 改变出参,将导致默认的UTF-8转变为GBK。
那我们接着来测试,在两条路由的集合点添加一个js(等于是在两条路线后都加了这个处理),通过setField('路径','替换内容')(未标注序号的是替换所有的该路径内容)代码进行出参内容的替换,测试时将id的内容替换成‘你好’,那么继续用SoupUI测试,结果是线路2正常返回,线路一则报错。
要点二:setField功能只能对UTF-8的内容起作用。
那么如何使得第一条路线也能成功呢,其实也简单,通过CharacterEncodingTranslator (Rhapsody字符编码转换工具),GBK转为UTF-8后,该服务也就能正常使用了。
|