Задать вопрос
@lebedev121

Почему моё SPA по REST делает слишком много http-запросов?

Заходя на определённую страницу моё SPA, сделанное по архитектуре REST для каждой отдельной сущности (products, users, clients... и т.д.) делает отдельный http-запрос. Вообще по архитектуре REST так и должно быть. Какие есть способы уменьшить количество запросов на сервер? Я не знаком, но слышал о SSR и GraphQL, может они как-то помогут или если есть какие-либо другие способы буду признателен, если подскажите. Хотелось делать один запрос, а там уже с сервера скопом прилетало бы всё вместе.
  • Вопрос задан
  • 729 просмотров
Подписаться 2 Простой 1 комментарий
Решения вопроса 3
rockon404
@rockon404
Frontend Developer
Для REST можно с запросом отдавать все связанные с сущностью или коллекцией сущностей данные:
GET /api/posts/
{
  posts: [ ... ],
  linked: {
    users: { ... }.
    comments: { ... },
    tags: { ... },
  }
}

На стороне сервера, можно складывать данные в window:
<script>
  window.__INITIAL_STATE__ = { ... };
</script>
Ответ написан
Комментировать
@lex_never_give_up
кешируй запросы или ставь проверки на существовение, чтобы не тянуть их каждый раз если это статика (аля страны и прочее)
Ответ написан
Комментировать
@mrAlexRabota
Frontend developer
lebedev121 Привет) я использую Graphql для решения этой проблемы)
Вот на github https://github.com/RayZik/KIT есть небольшой пример, сервер gql и реакт на клиенте, но клиентом не занимался сильно пока)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
b0nn1e
@b0nn1e
Alcohol & Ruby on Rails
А какие у вас проблемы возникают с количеством запросов?
Какая разница куча маленьких параллельных запросов или один большой?
Ответ написан
Комментировать
@synapse_people
Сделать еще 1 ендпоинт, который запускает другие?
Те. некий аналог вк execute, принимающий названия методов,параметры и возвращающий общий результат, можно подключить движок JS, чтобы отрабатывать результат в нужный формат
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы