前端query,data傻傻分不清
背景
有些开放平台项目是需要自己去写前后端的。记录一些自己开放中遇到的问题。
针对某一个机构终端配置多个属性,我的想法是在url传机构id,配置项不在url传,后端利用dto去接受。
过程
我写的前端js
// 批量配置选择机构终端参数
export function batchConfigurationTerminal(merchIds,configurationTerminalForm) {
return request({
url: '/op/merchant/batchConfigurationTerminal/' + merchIds,
method: 'post',
data: configurationTerminalForm
})
}
之后发现后端dto根本自动接受不了参数,我打开了F12,发现Request payload是一串json字符串。
之后我把前端 data 改成 query,是可以自动接受的。
这时候我才焕然大悟,想起之前post和get的区别。写成query 的话后端是能自动接受的,post的话后端是需要利用HttpRequest去接受的。考虑到安全性,我采用data后端利用HttpRequest去接受然后去转化dto。
public AjaxResult batchConfigurationTerminal(@PathVariable String[] merchIds, HttpServletRequest request) throws Exception{
// 1. 配置机构终端参数校验
String json = request.getReader().readLine();
if (Strings.isNullOrEmpty(json)) {
throw new EhcException("批量配置选择机构终端参数无效");
}
TerminalParameterDTO terminalParameterDTO = JSONObject.parseObject(json, TerminalParameterDTO.class);
.......
}
前端switch开关回填
背景
在前端switch开关组件回填的时候遇到了问题,发现后端即使返回true,false前端都是回填true。
之后看了api才知道这里的true和false是boolean值。
过程
那么前端如何把字符串转换为boolean值呢? 看到这里大家肯定会想后端转把。后端转肯定容易,但是看一下以下代码
List<RhcAppProperties> rhcAppPropertiesList =
rhcAppPropertiesService.selectRhcAppPropertiesList(rhcAppProperties);
return AjaxResult.success(rhcAppPropertiesList.stream().map(a ->
new JSONObject()
.fluentPut(a.getPropKey(), a.getPropValue())
));
后端实在不放方便转,这里list有key为天数value值为整数,否则天数永远是true了。
那么前端如何去转呢?去判断字符串返回就是boolean值啦。
this.configurationTerminalForm.needRiskScreening = response.data[1].needRiskScreening === 'true';
this.configurationTerminalForm.needStateCouncilTravelCard = response.data[2].needStateCouncilTravelCard === 'true';
this.configurationTerminalForm.needNucleicAcidResults = response.data[3].needNucleicAcidResults === 'true';
this.configurationTerminalForm.needVaccinateStatus = response.data[4].needVaccinateStatus === 'true';