前言

通常在Springboot接收参数时候,都是json格式的传输,使用restful风格,而在实际开发中,可能会接收其它格式的参数,比如x-www-form-urlencoded格式的数据

一、x-www-form-urlencoded格式是什么?

就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对,比如,name=zhangsan&age = 18

二、后端如何接收

1.后端代码

1.(使用@RequestBody+ String类型接收 )

代码如下(示例):

    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestBody String cd) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(cd);
        return respEntity=new RespEntity(RespCode.CODE_200,cd);
    }

2.(使用@RequestBody+ Map类型接收 )

代码如下(示例):

    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestParam Map<String, String> params) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(params);
        return respEntity=new RespEntity(RespCode.CODE_200,params);
    }
}

3.(使用@RequestBody+ LinkedHashMap类型接收 )

代码如下(示例):

    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestParam LinkedHashMap<String, String> params) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(params);
        return respEntity=new RespEntity(RespCode.CODE_200,params);
    }
}

postman:
在这里插入图片描述
控制台输出:
在这里插入图片描述

使用map数据类型:
在这里插入图片描述
在这里插入图片描述

2.(错误的)后端代码(使用@RequestBody+ 自己封装类型接收 )

postman:
在这里插入图片描述
自己封装的实体:
在这里插入图片描述
后端代码:
在这里插入图片描述
postman报错:
在这里插入图片描述

3.(错误的)后端代码( 单独String类型接收 )

在这里插入图片描述

总结

当传入参数是x-www-form-urlencoded,接收参数@RequestBody+ String/Map/LinkedHashMap即可接收成功

    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestBody String cd) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(cd);
        return respEntity=new RespEntity(RespCode.CODE_200,cd);
    }
}
    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestBody Map<String, String> params) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(params);
        return respEntity=new RespEntity(RespCode.CODE_200,cd);
    }
    @PostMapping("/efly/get")
    @ResponseBody
    public RespEntity getEFlyReturnPR(@RequestParam LinkedHashMap<String, String> params) {
        System.out.println("接收到的x-www-form-urlencoded");
        System.out.println(params);
        return respEntity=new RespEntity(RespCode.CODE_200,params);
    }
}
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐