天天看点

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

关于接收x-www-form-urlencoded格式数据的后端

  • 前言
  • 一、x-www-form-urlencoded格式是什么?
  • 二、后端如何接收
    • 1.后端代码
      • 1.(使用@RequestBody+ String类型接收 )
      • 2.(使用@RequestBody+ Map类型接收 )
      • 3.(使用@RequestBody+ LinkedHashMap类型接收 )
    • 2.(错误的)后端代码(使用@RequestBody+ 自己封装类型接收 )
    • 3.(错误的)后端代码( 单独String类型接收 )
  • 总结

前言

通常在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:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

控制台输出:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

使用map数据类型:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结
关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

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

postman:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

自己封装的实体:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

后端代码:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

postman报错:

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

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

关于接收x-www-form-urlencoded格式数据的后端前言一、x-www-form-urlencoded格式是什么?二、后端如何接收总结

总结

当传入参数是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);
    }
}