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

在和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[]数组就能很好地处理同名参数。

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值