Postman接口测试工具使用及踩坑记录

Postman接口测试工具使用及踩坑记录

  • Postman简介+下载地址
  • 安装及使用
  • Postman发送post请求时后台未接受数据,错误信息400的解决
    • 问题描述
    • 解决办法

Postman简介+下载地址

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,然而由于2018年初chrome停止对chrome应用程序的支持,你的postman插件可能无法正常使用了。不过可以直接下载Postman的应用程序,下载地址为Postman下载地址

安装及使用

网上安装教程很多,在这里推荐一个我看到的
Postman教程大全
使用方法讲的非常详细

Postman发送post请求时后台未接受数据,错误信息400的解决

问题描述

在使用Postman测试自己的一个小项目登录的时候,我遇到了一些问题,后端始终接收不到前端数据,并且提示错误信息如下
Postman接口测试工具使用及踩坑记录_第1张图片模拟测试如下的情况:
前端发送ajax请求发送json格式数据传参,将用户名和密码发送到后台

$.ajax({
     
         url:"user/queryUser",
         type:"post",
         data:{
     "userName":userName,"password":password},
         dataType:"json",
         success:function (data) {
     
         if(data!=""){
     
                    window.location.href = "system.jsp"
         }else {
     
                    alert("登录失败!用户名或密码错误!")
                }
         }
})

对应Postman的操作如下:
Postman接口测试工具使用及踩坑记录_第2张图片
先选择请求方式为Post

Postman接口测试工具使用及踩坑记录_第3张图片再设置参数,选中Body----->raw,并且数据格式选中Json(默认为Text)
然后添加所需参数后发送请求(Send)
然而后台始终得不到参数,并且一直报参数错误400

解决办法

查了好久终于发现了问题所在:
在Controller层中,我使用了注解@RequestParam来获取参数

   @RequestMapping("queryUser")
   public Boolean queryUser(@RequestParam("userName") String name,@RequestParam("password") String password,HttpServletRequest request){
     
        User user = null;
        user = userService.queryUser(name,password);
        HttpSession session = request.getSession();
        session.setAttribute("user",user);
        if(user!=null){
     
            return true;
        }else {
     
            return false;
        }
    }

使用@RequestParam注解时,是接收请求头request header中的数据,而@RequestBody传参是接收请求体request body中的数据,而postman测接口时传参是放在body中传的,简而言之就是这两种注解接收参数的位置不同,需要接收Body---->raw中的参数时不能使用@RequestParam注解。我将后台代码更改成这样以后就能接收到参数了

    @RequestMapping("queryUser")
    public Boolean queryUser(String userName,String password,HttpServletRequest request){
     
        User user = null;
        user = userService.queryUser(userName,password);
        HttpSession session = request.getSession();
        session.setAttribute("user",user);
        if(user!=null){
     
            return true;
        }else {
     
            return false;
        }
    }

使用了@RequestParam如何发送参数以及使用@RequestBody发送请求传递参数时具体操作的区别可以参考这篇博客
如何使用postman请求带有@RequestParam和@RequestBody格式的参数

你可能感兴趣的:(JAVA)