( 三 )@PathVariable、@JsonView的使用

@PathVariable、@JsonView的使用

@GetMapping(value = "/user/{id://d+}")
public User getInfo(@PathVariable(name = "id") String idxxx){} // @PathVariable注解获取URL中{}片段值放到方法参数中


@JsonView 使用步骤(作用:在返回相同对象时候,控制在某一个视图返回的字段,在另一个视图返回的字段)
    1.在实体类中使用接口声明多个视图
    2.在值对象的getter方法上使用@JsonView()指定视图
    3.在Controller接口方法上指定视图


import com.fasterxml.jackson.annotation.JsonView;

public class User {

    // 定义两个视图
    public interface UserSimpleView{} // 简单视图(展示用户名)
    public interface UserDetailView extends UserSimpleView{} // 详情视图(展示用户名和密码)
    private String username;
    private String password;

    public User() {
    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    @JsonView(UserSimpleView.class)
    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @JsonView(UserDetailView.class)
    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

 


@RestController
public class UserController {

    @GetMapping(value = "/user")
    @JsonView(User.UserSimpleView.class)
    public List<User> query(UserQueryCondition userQueryCondition, @PageableDefault(page = 1,size = 5,sort = "DESC") Pageable pageable){
        System.err.println(userQueryCondition);
        System.err.println(pageable);
        List<User> users = new ArrayList<>();
        users.add(new User("zhangsan","123"));
        users.add(new User("lisi","123"));
        users.add(new User("wangwu","123"));
        return users;
    }

    @GetMapping(value = "/user/{id:\\d+}") // :\\d+ 正则表达式  标识id为数字
    @JsonView(User.UserDetailView.class)
    public User getInfo(@PathVariable(name = "id") String idxxx){
        System.err.println(idxxx);
        User user = new User();
        user.setUsername("tom");
        user.setPassword("123");
        return user;
    }
}

两个接口方法的执行获取数据分别为:

[{"username":"zhangsan"},{"username":"lisi"},{"username":"wangwu"}]

{"username":"tom","password":"123"}

 

@PathVariable 作用:可以将URL中占位符参数{xxx}绑定到处理器类的方法形参中

@JsonView 作用:在返回相同对象时候,控制在某一个视图返回的字段,在另一个视图返回的字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值