TechStack:
java springboot mongodb restapi
Текст запроса на публикацию
{
firstName:"john",
lastName:"abraham",
age:28,
gender:"male",
skinColor:"dark",
country:"denmark"
}
Мой объект поиска, содержащий тело запроса POST
class SearchCriteria{
firstName,
lastName,
age,
gender,
skinColor,
country
}
Мой контроллер:
class UserController {
UserService userService;
@PostMapping("getUsers")
List<User> getUsers(@RequestBody SearchCriteria searchCriteria){
userService.fetchUsers(searchCriteria);
}
}
Моя служба:
класс UserService {
List<User> fetchUsers(SearchCriteria searchCriteria){
if(firstName.isNotBlank && )
}
}
Мой поиск требования:
searchByFirstName searchByLastName searchByAge searchByGender searchByAgeAndGender
если я получаю любую комбинацию, отличную от указанной выше, я должен вывести сообщение об ошибке неподдерживаемый критерий поиска.
Примеры:
Принятые поиски:
searchByFirstName
{
firstName:"john",
}
searchByFirstName
{
lastName:"kumar",
}
searchByAgeAndGender
{
age:30,
gender:"female"
}
Недопустимые комбинации поиска, поскольку я не предоставляю реализации:
{
firstName:"john",
lastName:"kumar",
age:28
}
{
age:30,
gender:"female"
country:"canada"
}
Чтобы добиться этого, я должен использовать mult iple if else блокирует, что я должен чертовски много кода и логики. Есть ли лучший способ ограничить комбинацию фильтров? Я мог бы использовать несколько сопоставлений GET для навигации, как показано ниже
getUsers / Byname /
код для фильтра с использованием Name
getUsers / uniqueSocialNumbe r
код для фильтрации с использованием ssn
Но в существующем приложении невозможно изменить существующие реализации. В идеале мне нужен какой-то механизм для чтения параметров запроса searchCriteria и для определения комбинаций для поиска в моем хранилище данных
Приветствуйте вашу помощь! Спасибо!