Второй сценарий лучше
Второй - создание API-интерфейса GraphQL, использующего базу данных в качестве данных.
источник пропускает REST API.
REST и GraphQL могут работать по HTTP, хотя GraphQL не зависит от протокола.
И GraphQL - это новый ребенок в блоке с множеством интересных функций, который решает большинство проблем, с которыми сталкиваются REST, например:
1.) Несколько конечных точек для выборки данных
In rest we have create multiple API endpoints
2.) Извлечение / недоставка
Some time API return extra data that we don't need or less data in response
3.) Сетевые запросы
multiple endpoint leads to more network requests
4.) Обработка ошибок
Обработка ошибок в REST довольно проста, мы просто проверяем заголовки HTTP, чтобы получить статус ответа. В зависимости от полученного кода состояния HTTP (404, 503, 500 и т. Д.) Мы можем легко определить, что это за ошибка и как ее устранить. GraphQL, с другой стороны, при работе по HTTP мы всегда получим статус ответа 200 OK. Если при обработке запросов GraphQL возникает ошибка, клиенту отправляется полное сообщение об ошибке с ответом
5.) Версия
Часто при использовании сторонних API REST мы видим такие вещи, как v1, v2, v3 и т. Д., Которые просто указывают версию API REST, которую мы используем. Это приводит к избыточности кода и уменьшению объема поддерживаемого кода. В GraphQL нет необходимости в управлении версиями, поскольку мы можем легко добавлять новые поля и типы в наш API GraphQL, не влияя на существующие запросы. Кроме того, мы можем легко пометить поля как устаревшие, и эти поля будут исключены из ответа, полученного с сервера
Для подробного сравнения, пожалуйста, посетите
GraphQl против отдыха
или этот пост
Или Официальный сайт GraphQL