В моем весеннем загрузочном приложении у меня есть вопрос в качестве ресурса со следующими полями.
[
{
"questionId":6,
"area":"TECHNICAL",
"title":"Find the index of first 1 in an infinite sorted array of 0s and 1s",
"description":"Given an infinite sorted array consisting 0s and 1s. The problem is to find the index of first 1 in that array. As the array is infinite, therefore it is guaranteed that number 1 will be present in the array.",
"state":"ACTIVE",
"difficultyLevel":"EASY",
"skills":[
{
"skillId":1,
"skillName":"ALGORITHM"
},
{
"skillId":2,
"skillName":"PROGRAMMING"
}
],
"proposedBy":"agrawalo",
"noOfTimesUsed":0,
"examples":null,
"probes":null,
"approvedBy":null,
"addedBy":null,
"dateCreated":"2018-05-16T19:29:11.113",
"dateLastUpdated":"2018-05-16T19:29:11.113"
},
{
...
},
...
]
Я хочу написать контроллеры для фильтрации вопросов.
Например:
1. / questions? Area = "технические".Контроллер, который возвращает вопросы с областью как «техническую».Для этого я написал следующий метод.
@RestController
public class QuestionController {
@RequestMapping("/questions", method = GET)
String getFilteredQuestions(@RequestParam("area") String questionArea) {
}
}
2. / questions? Area = "technical" & skill = "программирования".Теперь я хочу написать контроллер, который возвращает вопрос с областью как «технический» и навык как «программирование».
Один из способов добиться этого - добавить еще один параметр запроса к методу getFilteredQuestion.
Но на этом я в конечном итоге напишу очень грязный код (скажем, хочу ли я добавить больше фильтров), который проверяет, какой параметр запроса имеет значение null, а какой нет, и на основе этого применяют фильтры.
@RestController
public class QuestionController {
@RequestMapping("/questions", method = GET)
String getFilteredQuestions(@RequestParam("area") String questionArea, @RequestParam("skill") String questionSkill) {
}
}
3. / questions? Skill = "алгоритма" & предложилby = "agrawalo" ...
Любой чистый способ написания таких контроллеров?