REST vs База данных как источник данных GraphQL API? - PullRequest
0 голосов
/ 28 августа 2018

Мы начинаем новый проект с полным стеком. Было решено, что мы будем использовать React для внешнего интерфейса, который должен использовать API GraphQL.

Мы рассматриваем два сценария разработки этого API:

  • Первый - это создание API-интерфейса GraphQL, использующего REST API в качестве источника данных с использованием Apollo.

  • Вторым является создание API-интерфейса GraphQL, который использует базу данных в качестве источника данных, пропуская REST API.

Каковы преимущества и недостатки каждого сценария? Один лучше другого?

Ответы [ 3 ]

0 голосов
/ 01 сентября 2018

На основании нашей дискуссии о gitter,

Поскольку вы строите свою платформу с нуля, вам не нужно создавать слой GraphQL поверх REST API. Это будет двойная работа и не нужна. Я рекомендую вам настроить Apollo-Server , который будет напрямую взаимодействовать с вашей базой данных.

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

Что касается PRISMA, это не дает вам такой гибкости. Это также не разрешает ACID-совместимые обновления для таких полей, как увеличение или уменьшение значения. Эта проблема на github может использоваться для отслеживания обновлений этой функции.

PRISMA хороша для быстрой настройки, но я (личное мнение) чувствую, что она не такая гибкая.

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

GraphQL на стороне клиента, и Apollo поможет вам расширить его и предоставить гораздо больше возможностей. Вам не нужно делать вещи сильно отличающиеся от того, что вы делали бы при создании REST API, кроме того факта, что вам не нужно определять отдельные конечные точки для каждого запроса. Взаимодействия с базой данных остаются практически такими же, за исключением того факта, что вы возвращаете / запрашиваете только те данные, которые вам нужны, и это можно сделать динамически. С веб-сайт graphql

Отправьте запрос GraphQL своему API и получите именно то, что вам нужно, не больше и не меньше. Запросы GraphQL всегда возвращают предсказуемые результаты. Приложения, использующие GraphQL, работают быстро и стабильно, поскольку контролируют данные, которые получают, а не сервер.

Другие упоминания: AWS Appsync

0 голосов
/ 06 сентября 2018

Второй сценарий лучше

Второй - создание 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

0 голосов
/ 29 августа 2018

Использование REST для включения GraphQL похоже на использование ? для включения Tesla. Просто тупой !! Используйте базу данных, но выбирайте только те поля и записи, которые запрашиваются в запросе GraphQL, а НЕ «выбирайте *». Используйте Redis кеш, если вам нужна скорость.

...