Как сделать «по-уму» обработку рэквеста сервисом поиска? есть обьект репозиторий с методами
- searchProducts
- searchStores
- getNearestShops
и т д
в случае если есть ключ-значение - все просто?name=abc&city=London
но нужна дополнительная логика которая будет определять как именно обрабатывать значение входного параметра[{"key":"name","value":"London","type":"searchByLike"}, {"key":"price","value":"100","type":"greaterThan" } ]
надо это как-то правильно в плане ООП спроектировать чтоб реюзать
Спасибо

21 Авг 2019 в 07:02
176 +1
1
Ответы
1

Для реализации данного функционала вам нужно создать класс, который будет обрабатывать входные параметры запроса. Давайте назовем его RequestProcessor.

У этого класса должны быть методы для обработки различных типов фильтров, например searchByLike, greaterThan и другие. Каждый метод будет принимать значение параметра и выполнять соответствующую логику.

Примерно так может выглядеть код:

class RequestProcessor:
def searchByLike(self, value):
# Реализация логики поиска по частичному совпадению
pass
def greaterThan(self, value):
# Реализация логики поиска значений больше указанного
pass
def processRequest(self, filters):
for filter in filters:
key = filter["key"]
value = filter["value"]
filter_type = filter["type"]
if hasattr(self, filter_type):
getattr(self, filter_type)(value)
else:
# Обработка неизвестного типа фильтра
pass

Теперь вы можете использовать объект класса RequestProcessor для обработки входных параметров запроса. Вызовите метод processRequest, передав в него список фильтров, и каждый фильтр будет обработан соответствующим методом.

Надеюсь, это поможет вам правильно спроектировать решение и повторно использовать его при необходимости.

20 Апр в 13:09
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 727 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир