Sobes.tech
Назад к вопросам
Junior — Middle
57

Какие причины делают использование REST менее популярным в современных приложениях?

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

REST не стал «менее популярным» в целом, но в современных приложениях его часто заменяют более удобными подходами там, где нужен гибкий контракт и высокая производительность. Обычно ожидают услышать, что REST ограничивает работу с данными fixed-endpoint’ами и часто приводит к overfetching/underfetching. Ещё важны слабая гибкость для клиентских запросов и рост сложности при большом числе ресурсов и версий API.

Определение:

REST — это архитектурный стиль построения HTTP API, где ресурсы доступны через стандартные методы и понятные URL. Его основная сила — простота, кэширование и универсальность.
Снижение популярности в некоторых сценариях связано не с тем, что REST плох, а с тем, что для сложных клиентских приложений он не всегда удобен: клиент получает либо слишком много данных, либо недостаточно, и вынужден делать несколько запросов.

Пример использования:

Например, мобильному приложению нужно показать карточку пользователя с именем, аватаром, последними 5 заказами и статусом подписки. В REST это часто превращается в несколько запросов к разным эндпоинтам или в один «толстый» ответ, который возвращает лишние данные. В таких случаях иногда выбирают GraphQL или BFF-подход.

// Упрощённый пример REST-контроллера
@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{id}")
    public UserDto getUser(@PathVariable Long id) {
        return userService.findUserDtoById(id);
    }

    @GetMapping("/{id}/orders")
    public List<OrderDto> getUserOrders(@PathVariable Long id) {
        return orderService.findLastOrdersByUserId(id);
    }
}

Пояснение кода:

В этом примере REST API разделяет данные по ресурсам: пользователь и его заказы — это разные эндпоинты.
Если клиенту нужна только часть полей пользователя, он всё равно может получить больше данных, чем требуется.
Если нужны данные из нескольких ресурсов сразу, придётся делать несколько HTTP-запросов.
Именно это и показывает типичную проблему REST в современных UI-приложениях: ограниченная гибкость ответа под конкретный экран.

Ключевые моменты:

  • REST остаётся популярным, но не всегда оптимален для сложных клиентских интерфейсов.
  • Главная проблема — overfetching и underfetching данных.
  • Часто требуется несколько запросов для одного экрана или страницы.
  • Версионирование и поддержка большого числа ресурсов могут усложнять API.
  • Для некоторых задач удобнее GraphQL, gRPC или BFF.
  • REST хорошо подходит там, где важны простота, стандартность и HTTP-кэширование.