Добавьте AWS AppSync GraphQL API в свое приложение React
Введение
В предыдущем посте мы с нуля установили и настроили AWS Amplify. Затем создал приложение React и за несколько простых шагов добавил полный поток аутентификации.
Во второй части я добавлю в приложение API AWS AppSync GraphQL.
GraphQL
GraphQL - это язык запросов для вашего API и среда выполнения на стороне сервера для выполнения запросов с использованием системы типов, которую вы определяете для своих данных.
GraphQL не привязан к какой-либо конкретной базе данных или механизму хранения, а вместо этого поддерживается вашим существующим кодом и данными.
Вы можете узнать больше о GraphQL здесь:
AWS AppSync
Создание серверной части для GraphQL API может потребовать довольно много кода.
AWS AppSync позволяет разработчикам избавиться от сложностей и времени, затрачиваемых на создание серверной части GraphQL, и беспокоиться только о создании своего приложения, и это делается с помощью возможностей реального времени и офлайн.
С помощью AppSync вы можете создавать масштабируемые приложения, в том числе требующие обновлений в реальном времени, для ряда источников данных, таких как хранилища данных NoSQL, реляционные базы данных, HTTP API и ваши собственные источники данных с помощью AWS Lambda.
Для мобильных и веб-приложений AppSync дополнительно обеспечивает локальный доступ к данным, когда устройства отключаются, и синхронизацию данных с настраиваемым разрешением конфликтов, когда они снова в сети.
Узнайте больше о AWS AppSync, посетив Руководство разработчика AWS AppSync.
Давайте начнем
Отправной точкой является законченный код из первой части.
Клонировать репо:
$ git clone [email protected]:mlomboglia/react-amplify.git cd react-amplify cd part1-authentication npm install
Протестируйте свое приложение и убедитесь, что оно запущено:
npm start
Вы должны увидеть экран входа в систему:
Войдите или создайте нового пользователя для доступа к панели инструментов главного экрана.
Добавить поддержку API в приложение
Для создания API воспользуемся AWS AppSync.
AWS AppSync упрощает разработку приложений, позволяя создавать гибкий API для безопасного доступа, управления и объединения данных из одного или нескольких источников данных.
AppSync - это управляемая служба, которая использует GraphQL, чтобы упростить приложениям получение именно тех данных, которые им нужны.
Давайте воспользуемся Amplify CLI, чтобы начать со следующей команды:
$ amplify add api
Это запустит ряд шагов, которые помогут нам создать первый API AWS AppSync GraphQL.
Сделайте выбор ниже и нажмите Enter, чтобы завершить создание API. Я рекомендую использовать пул пользователей Cognito , настроенный в первой части для аутентификации. Вы можете использовать ключ API для тестирования, но не рекомендуется в производственной среде.
В этом руководстве я буду использовать предложенный одиночный объект с полями (например, «Todo» с идентификатором, именем, описанием) от AWS Amplify. Файл graphql.schema
будет автоматически создан по следующему пути: /amplify/backend/api/todo
.
type Todo @model { id: ID! name: String! description: String }
Amplify CLI поставляется с GraphQL Transformer, который преобразует аннотированные файлы схемы GraphQL в соответствующий шаблон AWS CloudFormation в соответствии с вашими требованиями к данным.
Сюда входят такие параметры, как следующие:
@model
для хранения типов в Amazon DynamoDB.@auth
для определения различных стратегий авторизации.@connection
для определения отношений между@model
типами объектов.@searchable
для потоковой передачи данных типа объекта@model
в сервис Amazon Elasticsearch.
Вы можете узнать больше о GraphQL Transform здесь:
Теперь отправьте схему в AWS.
$ amplify push
Сохраните все параметры по умолчанию для создания операций GraphQL - запросы, изменения и подписки.
AWS AppSync создаст AWS CloudFormation на основе вашей структуры папок. Этот процесс займет некоторое время. Мы рассмотрим локальные вызовы для ускорения разработки в будущих публикациях.
После завершения процесса он покажет вашу недавно созданную конечную точку. Вы всегда можете редактировать свою схему и вносить новые изменения.
В вашей новой структуре папок расширения теперь есть внутренняя папка с todo api и auth, ваш schema.graphql
и информация AWS CloudFormation. Внутри папки src
вы найдете папку graphql
со всем сгенерированным кодом, готовым к использованию.
Перейдите в Консоль AWS → AWS AppSync, чтобы увидеть развернутую схему. Вы также можете запускать запросы из раздела Запросы.
В разделе Источники данных вы также можете увидеть недавно созданную таблицу TodoTable в DynamoDB. Да, это было создано автоматически для хранения ваших данных.
Если вы хотите обновить свой API, откройте backend/api/todo/schema.graphql
файл своего проекта (не тот, который находится в папке backend/api/blog/build
) и отредактируйте его.
Вы можете скомпилировать backend/api/todo/schema.graphql
, запустив:
$ amplify api gql-compile
$ amplify push
Не забывайте продвигать новые изменения.
Добавьте Todo GraphQL в приложение React
Теперь давайте добавим Todo GraphQL в наше приложение React. Amplify CLI уже включил src/aws-exports.js
конфигурацию, необходимую для AppSync API.
Добавить серверную часть GraphQL
Откройте App.js
и добавьте импорт, чтобы включить как категорию API
, так и метод graphqlOperation
следующим образом:
import { API, graphqlOperation } from 'aws-amplify';
Измените приложение на компонент класса. Не забудьте добавить импорт вверху.
Добавьте следующий запрос и изменения в свой код перед определением class App extends Component {...}
следующим образом:
Теперь внутри компонента App
добавьте следующие два метода перед методом render()
:
Теперь вы можете выполнять вызовы GraphQL из своего приложения. Обновите метод render()
, чтобы в нем были следующие кнопки для вызова мутации и запроса:
Это ваш заполненный App.js
файл:
Запустите приложение:
$ npm run start
Авторизуйтесь или создайте нового пользователя.
Теперь щелкните GraphQL Todo Mutation, чтобы добавить фиктивный элемент:
Щелкните Запрос списка GraphQL, чтобы вывести список своих элементов:
Вы можете проверить, что ваши элементы хранятся в AWS Console → DynamoDB
Следующие шаги
Это только начало использования Amplify с React. В следующих постах я расширю приложение, добавив:
- Сделайте приложение красивее с помощью Material-UI: популярный фреймворк React UI.
- Аналитика: прямая аналитика для отслеживания пользовательских сеансов, атрибутов и показателей в приложении.
- Хранилище: безопасное управление пользовательским контентом в облаке или на устройстве.
Весь исходный код доступен в моем GitHub.
Обновлять
Теперь доступно создание приложения на React с помощью AWS Amplify в простых шагах (Часть 3). Добавьте аналитику и хранилище в свое приложение React.
2020–05–21: Обновлено для использования Amplify версии 3
Удачного кодирования!