• 使用Spring+Postman实现数据交互


    使用Postman实现mvc与Json数据交互

    修改web.xml:

    
     
    
      Archetype Created Web Application
     
     
      
      
        CharacterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
          encoding
          utf-8
        
      
      
        CharacterEncodingFilter
        /*
      
     
      
      
        app1
        org.springframework.web.servlet.DispatcherServlet
        
          contextConfigLocation
          classpath:spring-web.xml
        
        1
      
     
      
        app1
        /
      
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    加入spring-web.xml:

    
     
        
        
        
        
        
        
            
            
            
        
        
        
            
            
                5242880
            
        
     
        
        
     
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    建立User实体类:

    public class User {
        private String id;
        @JsonIgnore
        private String name;
     
        public String getId() {
            return id;
        }
     
        public void setId(String id) {
            this.id = id;
        }
     
        public String getName() {
            return name;
        }
     
        public void setName(String name) {
            this.name = name;
        }
     
        @Override
        public String toString() {
            return "User{" +
                    "id='" + id + '\'' +
                    ", name='" + name + '\'' +
                    '}';
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29

    建立一个ResopsonseStatus枚举类,用来传递响应的结果。

    package com.cc.mvc.constants;

    public enum ResopsonseStatus {
     
        OK("200","请求成功!"),
        AUTHOR_ERROR("1001","接口认证失败"),
        INTENAL_ERROR("1003","程序内部错误"),
        AUTHOR_OUTTIME("1002","认证过期");
     
        private String code;
        private String msg;
     
        ResopsonseStatus(String code, String msg) {
            this.code = code;
            this.msg = msg;
        }
     
        public String getCode() {
            return code;
        }
     
        public void setCode(String code) {
            this.code = code;
        }
     
        public String getMsg() {
            return msg;
        }
     
        public void setMsg(String msg) {
            this.msg = msg;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    建立ServerResponse实体类,用于反回响应后的结果。

    package com.cc.mvc.response;
     
    import com.cc.mvc.constants.ResopsonseStatus;
    import com.fasterxml.jackson.annotation.JsonIgnore;
    import com.fasterxml.jackson.databind.annotation.JsonSerialize;
     
    import java.io.Serializable;
     
    @JsonSerialize(include = JsonSerialize.Inclusion.NON_NULL)
    //@JsonInclude(JsonInclude.Include.NON_NULL)
    public class ServerResponse implements Serializable{
        @JsonIgnore
        private String code;/*业务响应嘛*/
        @JsonIgnore
        private String msg;/*相应的信息*/
    //    private Object obj;/*相应的数据,不推荐*/
     
        private T data;/*相应数据,推荐*/
     
        private ServerResponse(String code,String msg,T data) {
     
            this.code=code;
            this.msg=msg;
            this.data=data;
     
        }
        /*成功的响应*/
        public static ServerResponse ok(Object t){
            return new ServerResponse(ResopsonseStatus.OK.getCode(),ResopsonseStatus.OK.getMsg(),t);
        }
        /*失败的响应,固定错误信息*/
        public static ServerResponse error(Object t){
            return new ServerResponse(ResopsonseStatus.INTENAL_ERROR.getCode(), ResopsonseStatus.INTENAL_ERROR.getMsg(),t);
        }
     
        /*失败的响应,自定义错误信息*/
        public static ServerResponse errorMsg(String msg){
            return new ServerResponse(ResopsonseStatus.INTENAL_ERROR.getCode(), msg,null);
        }
     
        public String getCode() {
            return code;
        }
     
        public void setCode(String code) {
            this.code = code;
        }
     
        public String getMsg() {
            return msg;
        }
     
        public void setMsg(String msg) {
            this.msg = msg;
        }
     
        public T getData() {
            return data;
        }
     
        public void setData(T data) {
            this.data = data;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64

    注意:这里@JsonIgnore 是代表着,你需要显示到前端的就不加这个注解,不需要显示到前端的就加上这个注解。

    写Controller测试,这是使用json对象字符串的方式传递过去,我们运行一下,先将Tomcat跑起来。

    @Controller
    public class TestController {
     
        @Autowired
        private UserService userService;
     
        @RequestMapping(value = "/test", produces="application/json;charset=UTF-8")
        @ResponseBody
        public String test(HttpServletResponse response){
     
    //        response.setContentType("application/json;charset=gbk");
            //return "index";
            return "{\"name\":\"二狗子\",\"age\":12,\"sex\":\"男\",\"address\":\"马栏山\"}";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    随后我们将Postman启动,并模拟前端发送请求到后台,获取返回值。

    图片

    接下来使用json对象数组的方式传递过去,在Controller加入测试方法。

    @RequestMapping("/json2")
        @ResponseBody  //spring mvc默认采用json序列化框架:fastJson ,Gson  , Jackson框架(默认)
        public User getUser(){
            User user = new User();
            user.setId("2");
            user.setName("二狗子");
            return user;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在Postman里更改成下面这样,然后访问。

    图片

    这个User对象就返回过来了。但是name没返回过来,原因就是在建立User实体类表中加入了@JsonIgnore,所有才只显示了一个id过来,去掉就一起返回了。

    使用Postman模拟前端输入用户ID账号,并返回用户id到前端,在Controller加入测试方法。

    @ResponseBody
        @RequestMapping(value = "/add_user",method = RequestMethod.POST)
        public ServerResponse addUser(@RequestBody User user){
     
            System.out.println("----进入adduser----"+user);
     
     
            return ServerResponse.ok(user);
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    使用Postman访问:

    图片

    注意这里一定要加上这个Content-Type:

    在这里插入图片描述


    资源分享

    下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

    在这里插入图片描述

    在这里插入图片描述

  • 相关阅读:
    Vue框架的原生UI组件Kendo UI for Vue——主题 & 样式概述
    涉及区间的查询
    使用C#开发163邮件发送功能
    15 款 PDF 编辑器帮助轻松编辑、合并PDF文档
    007 怎么修改win7电脑系统显示时间
    CentOS 离线升级Linux的内核并删除多有内核
    三年软件工程真题
    【仿真建模】第三课:AntLogic入门基础课程 - 多层建筑行人疏散仿真讲解
    【找出通过车辆最多颜色】python实现-附ChatGPT解析
    Python之字符串判断
  • 原文地址:https://blog.csdn.net/m0_67695717/article/details/127654464