最近在开发,遇到前后端关于Boolean类型的参数传参和接收的问题:

场景:后台会根据用户是否出车/是否出司机(Boolean类型)来决定后端的业务逻辑(比如费用的计算),前端使用JSON字符串类型传输,后端使用@RequestBody接收对象...

前后端分离特殊内容规范

单选框、下拉框、复选框

由后端接口统一逻辑判定是否选中,通过isSelect标示是否选中,示例如下:

{
    code: 200,
    data: {
        message: "success",
        list: [{
            id: 1,
            isCarProvide: 1,
            isDriverProvide: 0
        }]
    }
}

规定:禁止下拉框、复选框、单选框判定选中逻辑由前端来处理,统一由后端逻辑判定选中返回给前端展示;

Boolean类型参数的传值

关于Boolean类型,JSON数据传输一律使用 1/0 来标示,1为是/true,0为否/false,前端单选框/复选框表示boolean,后台使用boolean接收,前端value值使用true/false或者1/0都是可以自动转成boolean类型的,我做以下测试:

Test实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Test implements Serializable {

    private static final long serialVersionUID = 2958237749066165066L;

    private Boolean carProvide;

}

ApiTest

@Controller
public class ApiTest {

    @PostMapping("/test")
    @ResponseBody
    public String booleanTest(@RequestBody Test test) {
        Boolean isCarProvide = test.getCarProvide();
        if (isCarProvide) {
            return "Boolean test success, isCarProvide value is:" + isCarProvide.booleanValue();
        } else {
            return "Boolean test failed, isCarProvide value is:" + isCarProvide.booleanValue();
        }
    }
}

前后端分离接口规范-LMLPHP

前后端分离接口规范-LMLPHP

前后端分离接口规范-LMLPHP

前后端分离接口规范-LMLPHP

这里我得出了结论,前端boolean类型的传输value的值都规定使用0/1,后端直接使用Boolean类型接收,不需要我们手动转换!!!

11-14 10:45