今天上班摸鱼摸得正起劲,前端同事发来一条消息说调我接口时报错:
接口:
@GetMapping(value = "/getList")
public ResponseMessage getList(IpcDeviceQuery query);
参数:
/getList?groupIdList[]=2&groupIdList[]=3
报错:
Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
粗略看了一下,是 GET 请求中数组格式的问题,前端同事使用的格式并不能被 Springboot 的后端接收到。
网上查了查资料,发现 GET 请求传输数组参数的方式百花齐放,各种格式都有,归纳了一下,大概以下三种格式:
- 格式 1:?groupIdList=2&groupIdList=3
- 格式 2:?groupIdList[]=2&groupIdList[]=3
- 格式 3:?groupIdList[0]=2&groupIdList[1]=3
哪一种格式是真正符合规范的? Spring 需要定制什么才能解析格式 2 和格式 3 的参数呢?
