Mam usługę internetową napisaną w Spring MVC. Może być używany przez programistów zewnętrznych. Nasze metody mają wiele parametrów opcjonalnych (przekazywanych w ciągu zapytania).Spring MVC - Jak sprawdzić, czy nie przekazano żadnych nieoczekiwanych parametrów ciągu zapytania?
Chcę się upewnić, że wszystkie parametry ciągu zapytania są poprawnie napisane i nie ma literówek. Czy istnieje prosty sposób na zrobienie tego? Przykładem podpis metoda:
@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
}
Jeśli ktoś nazywa tę metodę z „onlyImediateChildren = true” parametru (literówka) zamiast „onlyImmediateChildren = true” Spring MVC zignoruje parametr typoed i obejmie „onlyImmediateChildren” jest null . Programista otrzyma nieco niepoprawną listę wyników i nie zauważy błędu. Takie problemy mogą być powszechne i trudne do zdiagnozowania. Chcę sprawdzić, czy nie ma żadnych literowych params w ciągu kwerendy, aby zapobiec takim problemom.
UPDATE
Jest możliwe, aby wyodrębnić listę rzeczywistych parametrów z łańcucha zapytania. Następnie można go porównać z listą dozwolonych parametrów. Jeśli utknę na liście dozwolonych parametrów, będzie ona duplikować sygnaturę metody. Zastanawiam się, czy łatwo jest wyodrębnić listę dozwolonych parametrów z podpisu metody (np. Za pomocą adnotacji @RequestParam)?
Dziękujemy
Maxim
Którą wersję Spring używasz? –
Masz na myśli sprężynowe MVC? Używam pliku o nazwie "Spring-webmvc.3.0.5.Release.jar." –