Spring Boot学习笔记(四)Spring Boot对 Json 的支持

本文介绍了Spring Boot如何自动将对象和集合转化为Json,通过WebController和WebControllerTest的示例展示其在接口开发中的便利性。同时,讨论了请求参数的处理,包括限制为POST请求和使用对象接收参数。最后提到了Spring Boot支持通过URL路径传参。
摘要由CSDN通过智能技术生成

Spring Boot对 Json 的支持

上一篇:简单的Spring Boot Web开发

  • IDEA2019.1:新建一个项目:demo0723-2,添加与上篇同样的组件依赖,并在domain包下建立一个实体类:User.java:
package wen.demo07232.domain;

public class User {
    private String name;
    private int age;
    private String pass;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPass() {
        return pass;
    }

    public void setPass(String pass) {
        this.pass = pass;
    }

}
  • 在项目中新建WebController.java,在类中创建getUser:
import wen.demo07232.domain.User;

@RestController
public class WebController {
	@RequestMapping("/getUser")
		public User getUser() {
			User user = new User();
			user.setName("测试姓名");
			user.setAge(21);
			user.setPass("173");
			return user;
	}
}
  • 在 Test 包下新建 WebControllerTest 测试类,对 getUser() 方法进行测试
import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import wen.demo07232.web.WebController;

import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;

@SpringBootTest
public class WebControllerTest {
    private MockMvc mockMvc;

    @Test
    public void getUser() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.post("/getUser")).andDo(print());
    }
}

在这里插入图片描述
如图所示的返回方法,说明Spring Boot自动将User对象转成了Json进行了返回

  • 测试对象的List形式:

在WebController.java内部增加:

    @RequestMapping("/getUsers")
    public List<User> getUsers() {
        List<User> users = new ArrayList<>();

        User user1 = new User();
        user1.setName("Stephanie");
        user1.setAge(21);
        user1.setPass("Stephanie173100");
        users.add(user1);

        User user2 = new User();
        user2.setName("Track");
        user2.setAge(23);
        user2.setPass("Track181110");
        users.add(user2);

        return users;
    }

WebControllerTest.java中增加:

    @Test
    public void getUsers() throws Exception {
        mockMvc.perform(MockMvcRequestBuilders.post("/getUsers")).andDo(print());
    }

在这里插入图片描述
测试成功!说明不管是对象还是集合或者对象嵌套,Spring Boot 均可以将其转化为 Json 字符串,特别适合我们给其他系统提供接口时使用

  • 请求传参

使用Spring Boot 可以对请求作出一些限制,比如为了安全只允许POST请求的访问,只需要在方法上添加一个配置即可:
在这里插入图片描述
经过调试,发现其实把name改成value一样能调试成功:
在这里插入图片描述
这时候再以 get 请求去访问,就会返回: Request method ‘GET’ not supported

  • Spring Web 层支持多种方法传参,上篇文章中传入属性 name,如果直接使用对象接收也是支持的,只要是 User 的属性都会被⾃自动填充到 user 对象中。
@RequestMapping(name="/getUser", method= RequestMethod.POST) 
public String getUser(User user) {  
  ... 
 }
  • 使用地址进行传参:
    @RequestMapping(value = "get/{name}", method = RequestMethod.GET)
    public User get(@PathVariable String name) {
        User user = new User();
        user.setName(name);
        return user;
    }

开启main – java – Application 打开浏览器访问http://localhost:8080/get/Stephanie
在这里插入图片描述
下一章:Spring Boot 参数校验、自定义Filter、自定义Property

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值