美文网首页springboot
spring boot 从零开始入门2: REST服务通过对象返

spring boot 从零开始入门2: REST服务通过对象返

作者: jyjack | 来源:发表于2019-07-27 07:13 被阅读0次

    如果您认为对你有帮助,请点个赞!

    概述

    在上一篇环境搭建及HelloWorld,我们搭建了spring boot开发环境,并开发了第一个web应用HelloWorld。

    本篇将在WEB服务中,通过对象返回JSON格式的字符串。

    在没有spring boot时,通常使用如下方法来实现:

    • 使用JSONObject、JSONArray对象来构建JSON对象(虽然学习比较简单,但代码量很大)
    • 或使用 jackson实现对象与JSON的映射 (首次使用jackjon时,各种查资料,花了数天时间)

    无论使用哪种方法,我们都需要添加依赖包(那怕是通过maven,也需要在pom配置文件中添加依赖引用),还需要编写不少代码。使用spring boot时,我们只需要编写对象本身的代码,转换成JSON不需要编写一行代码(零代码)

    下面就让我们来见证奇迹吧,进入实战环节。

    实战

    在实现中我们将完成如下步骤:

    • 创建一个用户类(User.java ) ,该类包含Id、Name属性。
    • 创建一个User对象,并以JSON格式返回
    准备工作

    在开始实战前,需要准备好开发环境,并创建一个WEB项目。
    具体请参见上一篇环境搭建及HelloWorld

    新建User.java类

    新建一个用户类 User.java ,具体代码如下:

    //User.java
    
    package com.example.helloworld;
    
    import java.util.Date;
    
    public class User {
        private int id;
        private String name;
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    }
    
    创建服务,将User对象以JSON返回

    新建一个类 UserController.java ,具体代码如下:

    //UserController.java
    
    package com.example.helloworld;
    
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class UserController {
        @RequestMapping("/get")         //url
        public User getUser() {         //直接返回User对象
            User user = new User();
            user.setId(1);
            user.setName("Jack");
            return user;
        }
    }
    
    运行项目

    在”HelloworldApplication.java“文件上右键,点击run 菜单项,即可启动WEB服务

    通过浏览器来访问该应用,在浏览器地址栏输入: http://localhost:8080/get
    结果如下图所示:

    image.png

    阶段小结

    我们没有编写一行关于JSON的代码,也没有进行任何配置。
    这就是spring boot可以简化开发,是不是很神奇。

    复杂对象

    首先我们增加一个地址类UserAddress.java,代码如下:

    //UserAddress.java
    
    package com.example.helloworld;
    
    public class UserAddress {
        private String zip; //邮政编码
        private String address; //地址
    
        public UserAddress(String zip, String address) {
            this.zip = zip;
            this.address = address;
        }
    
        public String getZip() {
            return zip;
        }
    
        public void setZip(String zip) {
            this.zip = zip;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    }
    

    然后修改User.java ,在该类中增加地址类,增加的代码如下

        private UserAddress userAddress;
    
        public UserAddress getUserAddress() {
            return userAddress;
        }
    
        public void setUserAddress(UserAddress userAddress) {
            this.userAddress = userAddress;
        }
    

    最后在 UserController的getUser()方法中,增加如下代码

    user.setUserAddress(new UserAddress("400000","重庆市"));
    

    运行结果如下图:

    {"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"}}
    

    数组示例

    //User.java 在该类中增加如下语句
       private String[] hobbys;
    
       public String[] getHobbys() {
           return hobbys;
       }
    
       public void setHobbys(String[] hobbys) {
           this.hobbys = hobbys;
       }
    
    //UserController.java        在getUser()方法中增加如下语句
     user.setHobbys(new String[]{"游泳","计算机","篮球"});
    

    运行结果如下:

    {"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["游泳","计算机","篮球"]}
    

    MAP对象示例

    //UserController.java  在该类中增加如下两个方法
        @RequestMapping("/map")
        public Map<String, User> getUsers() {
            Map<String, User> map = new LinkedHashMap<>();
            User user1 = createUser(1, "Jack", new String[]{"游泳", "计算机", "篮球"});
            map.put("user1",user1);
    
            User user2 = createUser(2, "ZhangK", new String[]{"计算机", "爬山", "涉水", "开飞机"});
            map.put("user2",user2);
    
            return map;
        }
    
        private User createUser(int id, String name, String[] hobbys) {
            User user = new User();
            user.setId(id);
            user.setName(name);
            user.setUserAddress(new UserAddress("400000", "重庆市"));
            user.setHobbys(hobbys);
            return user;
        }
    

    运行结果如下:
    注意访问url最后的路径需要修改一下: http://localhost:8080/map

    {"user1":{"id":1,"name":"Jack","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["游泳","计算机","篮球"]},
    "user2":{"id":2,"name":"ZhangK","userAddress":{"zip":"400000","address":"重庆市"},"hobbys":["计算机","爬山","涉水","开飞机"]}}
    

    下一篇 spring boot 从零开始入门3: 读取属性配置文件

    相关文章

      网友评论

        本文标题:spring boot 从零开始入门2: REST服务通过对象返

        本文链接:https://www.haomeiwen.com/subject/bgqsrctx.html