GET和POST请求中,url中的参数和form表单中的参数怎么区分

2023-11-19

在和web前端开发过程中,经常会遇到使用form表单提交POST请求和GET请求。

一般GET请求格式如下: http://xxx../path?key1=value1&key2=value2

而POST请求的参数一般在请求体中。

但是有时会发现,web端提交的POST请求的路径中,包含了接口中的参数,和GET请求的格式是一样的。

这就心生疑惑,这两种形式到底怎么区分?

在请求体和Url中,如果同时存在同名参数,那么那个值才是后台真正拿到的呢?

为此,专门写了测试接口来测试以上情况,后台打印来看看到底是神马情况:


后台使用SpringMVC+Mybatis,控制器代码如下:

@RequestMapping(value = "/test", method = {RequestMethod.GET, RequestMethod.POST})
    @ResponseBody
    public ResultModel test(HttpServletRequest request, HttpServletResponse response) {
        ResultModel resultModel = null;
 
        Map<String, String[]> paramMap = request.getParameterMap();
 
        for (Map.Entry<String, String[]> entry : paramMap.entrySet()) {
            String key = entry.getKey();
            String[] values = entry.getValue();
 
            System.out.println("key = " + key);
            for (String value : values) {
                System.out.println("---value = " + value);
            }
        }
 
        return resultModel;
    }
使用Postman模拟浏览器发送POST请求,截图如下:


URL中存在参数k1=v1,form表单中存在参数k1=v2,send之后,观察后台打印:

key = k1
---value = v1
---value = v2
原来两个同名参数的值都能在后台拿到,难怪request.getParamterMap()方法的返回值类型是Map<String, String[]>,

第二个String[]数组就能很好地处理同名参数。

原来一直对此疑惑不解,这次记下了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GET和POST请求中,url中的参数和form表单中的参数怎么区分 的相关文章

随机推荐