记一次VUE前端请求@RequestParm 400问题

      从400的错误上,我们可以轻易的看出来,是参数有问题!可是前端说自己写法没有问题,后端说postman请求没有问题,开始扯皮。

 

 @RequestMapping(value = "/getCountryByPinyin",method = RequestMethod.POST)
 @ResponseBody
 public List getCountryByPinyin(
                            @RequestParam(value = "pinyinKey"
                          ) String pinyinKey){
        List countryByPinyin 
                = countryService.getCountryByPinyin(pinyinKey);

        return countryByPinyin;
    }

  一段简单的代码,postman请求是正常的返回参数,可是vue一请求就400,关键昨天一样的代码,前端可以请求到,今天换了个接口,就请求不到了,再一看昨天的接口,@RequestParam中缺少个默认值defaultValue,加上之后,可以请求到了,但是并没有接收到入参,找了网上,有网友说把请求的content-type更换下,application/json;charset=UTF-8换成application/x-www-form-urlencoded,赶快找出来,甩给前端,前端给了之后,依然没有效果。

这个时候,就需要分析下@RequestParam的注解了,这个注解接收到的是什么?他能不能接收到json?在网上找了好多资料,都没有具体说明,这个注解到底能不能接收到json,但是前端小姐姐传递的数据{"pinyinKey":"A"},感觉这是json啊,资料显示这个注解用来接收controller上的参数,controller应该就是url上的了啊,

  遂让前端小姐姐,改下传递参数的方式:

"localhost:8080/api/country/getCountryByPinyin?pinyinKey="+this.param

 成了!

@RequestParam这个注解,只能接收controller上参数,而非直接接收json。

以上个人简介,如果有详细的资料,可以在评论区告知,指导我学习下

 

感谢,此致敬礼

你可能感兴趣的:(记一次VUE前端请求@RequestParm 400问题)