gpt4 book ai didi

java - Spring MVC - 如何检查没有传递意外的查询字符串参数?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:50:40 26 4
gpt4 key购买 nike

我有一个用 Spring MVC 编写的 Web 服务。它可供第 3 方开发人员使用。我们的方法有很多可选参数(在查询字符串中传递)。

我想确保所有查询字符串参数都拼写正确并且没有拼写错误。有简单的方法吗?方法签名示例:

 @RequestMapping(value = {"/filter"}, method = RequestMethod.GET)
@ResponseBody
public List<MetricType> getMetricTypes(
@RequestParam(value = "subject", required = false) Long subjectId,
@RequestParam(value = "area", required = false) Long areaId,
@RequestParam(value = "onlyImmediateChildren", required = false) Boolean onlyImmediateChildren,
@RequestParam(value = "componentGroup", required = false) Long componentGroupId
) throws Exception
{
//Some code
}

如果有人使用“onlyImediateChildren=true”参数(拼写错误)而不是“onlyImmediateChildren=true”调用此方法,Spring MVC 将忽略拼写错误的参数并假定“onlyImmediateChildren”为空。开发人员将获得稍微不正确的结果列表,并且不会注意到该错误。此类问题可能很普遍且难以诊断。我想检查查询字符串中是否有拼写错误的参数,以防止出现此类问题。

更新

可以从查询字符串中提取实际参数列表。然后可以将其与允许的参数列表进行比较。如果我对允许的参数列表进行硬编码,它将复制方法签名。我想知道从方法签名中提取允许的参数列表是否容易(例如通过@RequestParam 注释)?

非常感谢

格言

最佳答案

您可以实现自己的 HandlerInterceptor .在 preHandle 方法中,您可以获得所有使用 @RequestParameter 注释的 HandlerMethod 参数。这些都是请求中允许的参数。

关于java - Spring MVC - 如何检查没有传递意外的查询字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com