Возможно ли фильтровать данные api перед получением с сервера?

#angular #typescript

#angular #typescript

Вопрос:

Я работаю с api, который содержит много данных (сейчас более 10 тыс. и растет с каждым днем). Я получаю их все с сервера, а затем фильтрую со временем (также я использую разбивку на страницы для отображения 10 данных на каждой странице). Но я думаю, что это не так хорошо для производительности. Возможно ли отфильтровать их перед получением всех данных? Например, я хочу получить данные, которые были загружены за последние 30 дней, и когда пользователь нажимает кнопку, получает еще 30 дней. Я не очень хорошо говорю по-английски, поэтому, вероятно, я допустил несколько ошибок. я надеюсь, вы могли бы понять и помочь мне.

Комментарии:

1. в Rest api вам нужно обновить rest api, есть много способов .. попробуйте изучить graphql api …!

2. Фильтрация должна выполняться на стороне сервера. Итак, вам нужно: использовать другие методы api или создать новый для фильтрации данных.

3. Как эмпирическое правило, вы должны фильтровать и, возможно, сортировать данные как можно ближе к тому месту, где они находятся. Если данные находятся в базе данных (например, sql server), то вам следует фильтровать данные на уровне сервера базы данных (в запросе на извлечение). С каждым дальнейшим шагом фильтр становится все дороже. Следующей конечной точкой в этой последовательности будет фильтрация в памяти в конечной точке веб-интерфейса. И это еще один шаг по сравнению с тем, что было бы на уровне клиента в браузере. Поэтому измените свою конечную точку и разделите код, чтобы принять параметры фильтра и фильтровать как можно ближе к данным.

Ответ №1:

Если вы можете изменить код сервера, вы могли бы добавить некоторые параметры в свою точку входа (что-то вроде url?limit=50 , чтобы ограничить до 50 записей)

Если нет, вы обязаны фильтровать то, что получаете со своего сервера.

Комментарии:

1. Я знаю этот метод, но я хотел бы услышать другие методы, если они существуют. Спасибо за ваш ответ

Ответ №2:

У вас должен быть доступ к вашему серверу, добавьте предложение «TAKE» в список, который вы отправляете обратно клиенту, где он сообщает базе данных вернуть около 50 лучших записей.

Кроме того, вы можете использовать HTTP_INTERCEPTOR в качестве промежуточного программного обеспечения, чтобы перехватить запрос до того, как он достигнет сервера, или перехватить ответ до того, как он достигнет вашей «подписки».

Прочитайте о перехватчике, это отличный и рекомендуемый способ обработки http-запросов. Вот вам и угловой перехватчик.

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

Удачи!