特殊类型作为请求参数

55 篇文章 0 订阅
本文探讨了在API设计中,如何正确使用Enum类型作为请求参数以及Boolean类型的特殊处理。针对Boolean类型的setter/getter方法,指出参数名与方法名的匹配规则,并提醒开发者注意`isXXX`与`setXXX`的对应关系。同时,通过示例展示了请求参数与Enum类型字段的匹配逻辑,强调了参数名与Enum常量的匹配而非属性匹配。
摘要由CSDN通过智能技术生成

Enum 类型作为请求参数

@PostMapping(value = "/user/list" , consumes = MediaType.APPLICATION_JSON_VALUE)
@ApiOperation(value = "获取用户信息列表", notes = "获取用户信息列表",
       consumes = MediaType.APPLICATION_JSON_VALUE,
       produces = MediaType.APPLICATION_JSON_VALUE, httpMethod = "POST")
public BaseResult<UserInfo> userList(@Valid @RequestBody UserFilterRequest request) {
   return BaseResultUtils.buildBaseResult(userService.userList(request));
}
@Data
@NoArgsConstructor
@ApiModel(value = "userFilterRequest", description = "根据xxx过滤用户")
public class userFilterRequest extends PageRequest {

    @ApiModelProperty("xxxx")
    private List<HomeClassifyEnum> homeType;

    @ApiModelProperty("xxx")
    private List<SexClassifyEnum> sexType;			!!!注意这里!!!!

    @ApiModelProperty("xxxx")
    private List<HeightClassifyEnum> heightType;
}
@Getter
public enum SexClassifyEnum{
    MAN("MAN", 0, "男"),			!!!注意这里!!!!
    FEMALE("FEMALE", 1, "女");

    private String type;
    private int value;
    private String remark;

    SexClassifyEnum(String type, int value, String remark) {
        this.type = type;
        this.value = value;
        this.remark = remark;
    }

    public String getType() {
        return type;
    }
}

请求示例

{
    "homeType": ["MAN"],			!!!注意这里!!!!
    "sexType": [],
    "heightType": [],
    "pageSize": 10,
    "pageNum": 1
}

Boolean 类型作为请求参数

当使用 @Data 注解生成 set get 方法时,结构体如下
在这里插入图片描述

传参
"isTest":false  //错误
"test":true    //正确

idea 自动生成的 set get 方法

	private Boolean isTest;
    public Boolean getTest() {
        return isTest;
    }
    public void setTest(Boolean test) {
        isTest = test;
    }
//----------------------------------------------
    private boolean good;
    public boolean isGood() {
        return good;
    }
    public void setGood(boolean good) {
        this.good = good;
    }
传参
"isTest":true   //正确
"test":false    //错误

两种方法生成的Boolean类型的getter/setter方法不同,但是boolean类型是相同的,但也和普通的setter/getter不太一样
controller层通过@requestBody 接收前台返回表单或json数据 ,通过set方法注入数据到DTO中,此时就需要注意自己项目中Boolean类型的结构

private Boolean isTest;   getTest/setTest

"isTest":true   //正确
"test":false    //错误
private Boolean isTest;   getIsTest/setIsTest

"isTest":false  //错误
"test":true    //正确

注意,Booleanboolean 不一样

private boolean good;

"good":true     //正确
"isGood":false   //错误
总结

Boolean 类型 参数名 isXXX,setIsXXX 则传参时应该用 XXX
			参数名 isXXX, setXXX 则传参时用 isXXX
boolean 类型,参数名是什么,就用什么

总结

请求的参数和是 enum 类型的名字进行匹配的,而不是 enum 类型的属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值