2017-02-08 17 views
3

У меня есть API REST, который поддерживает разбиение на страницы и фильтрацию, какотдаленные результаты с пагинацией

GET /jobs?page=1&count=10&language=php&country=!UK 
Host: mywebservice.com 

где 1 номер страницы и количество это количество результатов на странице.

Проблема заключается в том, что я получаю «задания» из другой веб-службы, которые также дают мне результаты с разбивкой по страницам (я не могу получить все задания), но не поддерживает такие фильтры, как «country =! UK» (страна, а не Великобритания) , я буду называть:

GET /opportunities?page=1&count=10&language=php 
Host: jobs.com 

После того как я получить работу от этой службы, мне нужно применить еще один фильтр (который не поддерживается 3 веб-службы партии - например: удалить все задания из конкретной компании или конкретного страна).

В этом случае набор результатов, который я отправлю обратно пользователю, может быть менее 10 заданий (от 0 до 10).

Какой оптимальный способ получить оптимальное количество результатов на страницу (10, число, запрашиваемое пользователем), с минимальным количеством звонков в стороннюю службу?

ответ

1

у вас есть два варианта:

1) быть алчность: запросить услугу 3d партии для больше деталей.

2) поленитесь: принять возможность выдачи второго (или третьего) вызов службы 3d партии

эти варианты выполнения оптимизации сети и оптимизации полезной нагрузки соответственно. Лучшее решение зависит от вероятности получения удовлетворительного ответа при первом вызове, запрашивая несколько дополнительных элементов. Это проблема «соотношение цены и качества». Постарайтесь определить наиболее благоприятную вероятность получения ваших 10 предметов, минимизируя количество выгружаемых предметов, запрошенных для 3-сторонней службы.

Хорошей идеей было бы также использовать комбинированный подход, выполняя жадную стратегию и используя второй запрос в качестве резервного решения. Если вы считаете, что предибуция хорошо, вы будете добиваться оптимального решения, минимизируя количество запросов и вес полезной нагрузки.