spring boot 坑: HTTP406 Not Acceptable ,Get请求参数问题
项目中发现某个请求后台Spirng boot 接口时候并无返回,显示HTTP 406报错。
1、查看后台日志并无报错信息。坑
2、其他类似请求可以正常请求,经过测试请求json字符,跟请求体无关。
3、当检查替换其他url请求参数的时候,请求能正常访问,检查请求参数的区别,发现一个请求参数为空。如 name=abc&timeout= 。timeout为空时才会报错。去掉timeout参数或者设置timeout值,不报错了。
4、检查spring boot 请求参数自动封装实体类,发现timeout类型为long 。
总结: spring boot请求参数封装比较严格,long类型的GET参数不能为空,必须设置值。假如不设置值,后台无报错,请求返回406 Not Acceptable错误。如果不仔细排查,定位很麻烦。
解决办法:
1、Get请求实体的类型为long时该参数必需不为空
2、Get请求实体的类型为long时改为包装类Long。也可以解决此问题。本人采用第二种办法,以免留下坑。