为了处理具有相同资源路径的一些情况,例如:
/路径/到/资源?参数1 =一个
/路径/到/资源?param2的= A
我介绍了@RequestMapping参数。现在看起来像这样:
@Override
@RequestMapping(value = PM_DATA_ROUTE, params = {"system", "className", "source", "fromTimestampInNanos",
"toTimestampInNanos"})
public List<PmDataInformationWrapper> getPmData(
@Valid TimestampRangePmDataRequestParameter timestampRangePmDataRequestParameter) {
LOGGER.info(REQUEST_RECEPTION_LOG, timestampRangePmDataRequestParameter);
return pmDataManagerAdapter.getPmData(timestampRangePmDataRequestParameter);
}
@Override
@RequestMapping(value = PM_DATA_ROUTE, params = {"system", "className", "source", "fromTimestampInNanos",
"durationInNanos"})
public List<PmDataInformationWrapper> getPmData(
@Valid TimestampDurationPmDataRequestParameter timestampDurationPmDataRequestParameter) {
LOGGER.info(REQUEST_RECEPTION_LOG, timestampDurationPmDataRequestParameter);
return pmDataManagerAdapter.getPmData(timestampDurationPmDataRequestParameter);
}
这些值如system,className等 - 是封装到对象请求参数中的字段的名称,我期望在控制器方法签名中使用。
除了一个小问题外,这个工作正常。如果我没有将这个“params”明确地放入@RequestParam然后从客户端丢失一些东西 - 错误响应是有意义的,看起来像这样:
“错误”:[ “'timestampInNanos'参数不能省略!” ],
消息本身来自验证。没关系。
我将这个参数添加到@RequestMapping后,同样情况的错误响应如下所示:
“exception”:“org.springframework.web.bind.UnsatisfiedServletRequestParameterException”, “错误”:[]
关于缺失的参数,甚至没有单词,因为在这种情况下它甚至没有进入控制器方法(这实际上是合理的)。
通常我在查询请求的ServletRequestAttributes中的错误,其中包含errorAttributes。
现在我不知道该怎么做。
在这种特殊情况下,有没有人有一些想法如何获得关于缺失参数的更有意义的信息?
我知道如果我们不进入所需的方法,然后只是跳转到默认的错误处理控制器 - 它可能很难说什么,但另一方面 - 像这样的API并不罕见,所以如何处理这种情况可能有一些好的做法......
提前致谢!