У меня есть REST API, который принимает параметры запроса. The query parameters are valid if and only if at a time only one query parameter is passed and it is among the list of valid query parameters.
В настоящее время моя логика для этого такова:
Я собираю параметры запроса на карте. А потом проверил его размер. Если размер> 1, функция выдает ошибку. Если это не так, то итерация по карте и если найти параметр, отличный от действительного, функция выдает ошибку.
Например:
if(queryParam.size()>1) {
throw new FailureResponse();
}
queryParam.forEach(e->{
String key = e.getKey();
if(!key.equalsIgnoreCase("p1") && !key.equalsIgnoreCase("p2")) {
throw new FailureResponse();
}
});
Но я думаю, что таким образом я нарушаю принцип разработки SOLID, который гласит: a class should be open for extension but closed for modification.
Я также подумал о creating a file and then reading the acceptable params
из этого, но это добавило бы к времени отклика API, поскольку это включает чтение файла.
Есть ли способ сохранить и прочитать действительные параметры запроса, и это не нарушает принципы разработки?