iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringMVC使用JsonView针对统一实体返回不同信息
  • 425
分享到

SpringMVC使用JsonView针对统一实体返回不同信息

2024-04-02 19:04:59 425人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、随便说说二、User信息载体类三、UserController的写法一、随便说说 项目中不同的接口需要返回不同的信息,而信息一般通过不同的对象实例去承载。例如有接口A和接口B

一、随便说说

项目中不同的接口需要返回不同的信息,而信息一般通过不同的对象实例去承载。例如有接口A和接口B,A需要返回不包含用户地址的用户信息,
而B需要返回包含用户地址的用户信息,其它信息和A的返回信息一致。

这个时候应该建立两个不同的用户类,一个包含address,一个不包含,这样做显然是麻烦的,那么JSONView就可以帮你很优雅的解决这个问题。

接下来就直接开始撸代码了。

二、User信息载体类

public class UserDTO {
    //不显示地址
    public interface CommonView {}
    //显示地址
    public interface AdminView extends commonView {}
    @jsonView(value = CommonView.class)
    private String username;
    @JsonView(value = AdminView.class )
    private String address;
    //Getter Setter ...
}

1.接口是public的

2.在类中写两个内部接口,分别标志不同的返回属性。接口是可以相互继承的,例如AdminView继承了CommonView,那么相当于AdminView包含了commonView标记的属性。

    CommonView --> username

    AdminView |--> passWord
              |--> CommonView --> username

三、UserController的写法

在需要返回不同视图的方法上加上@JsonView注解,注解中的value属性填写我们在UserDTO中定义的代表不同标记的接口类即可。

@RestController
@RequestMapping(value = "/user")
public class UserController {
    
    @GetMapping(value = "/common")
    @JsonView(value = UserDTO.CommonView.class)
    public UserDTO getCommonView() {
        return new UserDTO("kingboy", "北京");
    }
    
    @GetMapping(value = "/admin")
    @JsonView(value = UserDTO.AdminView.class)
    public UserDTO getAdminView() {
        return new UserDTO("kingboy", "北京");
    }
}

访问localhost:8080/user/common返回

{
"username": "kingboy"
}

访问lcoalhost:8080/user/admin返回

{
"username": "kingboy",
"address": "北京"
}

以上就是springMVC使用JsonView针对统一实体返回不同信息的详细内容,更多关于springmvc JsonView统一实体不同信息返回的资料请关注编程网其它相关文章!

--结束END--

本文标题: SpringMVC使用JsonView针对统一实体返回不同信息

本文链接: https://www.lsjlt.com/news/143608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作