Spring MVC で記述された Web サービスがあります。サードパーティの開発者が使用できます。私たちのメソッドには、多くのオプションのパラメーターがあります (クエリ文字列で渡されます)。
すべてのクエリ文字列パラメーターのスペルが正しく、タイプミスがないことを確認したいと考えています。それを行う簡単な方法はありますか?メソッド署名の例:
@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
}
誰かが「onlyImmediateChildren=true」ではなく「onlyImmediateChildren=true」パラメーター (タイプミス) を使用してこのメソッドを呼び出した場合、Spring MVC はタイプミスされたパラメーターを無視し、「onlyImmediateChildren」が null であると想定します。開発者は、わずかに間違った結果のリストを取得し、エラーに気付かないでしょう。このような問題は広範囲に及び、診断が困難になる可能性があります。このような問題を防ぐために、クエリ文字列に入力されたパラメーターがないことを確認したいと思います。
アップデート
クエリ文字列から実際のパラメーターのリストを抽出することができます。次に、許可されたパラメーターのリストと比較できます。許可されたパラメーター リストをハードコーディングすると、メソッド シグネチャが複製されます。メソッドの署名から (@RequestParam アノテーションなどで) 許可されたパラメーターのリストを抽出するのは簡単でしょうか?
どうもありがとう
マキシム