Использование GraphQL для управления хранилищами с открытым исходным кодом

Перевод статьи Using GraphQL to manage open source repositories, автор Brian Douglas

GraphQL - это язык запросов для API и среда выполнения этих запросов с существующими данными. Лучший способ узнать о GraphQL - использовать GraphQL, поэтому я собрал стартовый проект, чтобы следить и делать заметки о проектах с открытым исходным кодом на GitHub.

В любое время вы можете посмотреть на готовый проект на GitHub или демонстрационную версию на open-sauced.netlify.com.

Проект

Netlify любит открытый исходный код и вносит свой вклад в сообщество с открытым исходным кодом, предоставляя инструменты и бесплатный хостинг. Тем не менее, попасть в проекты с открытым исходным кодом может быть сложным процессом, в результате чего непобедимый немного потерял в соусе . Существует множество существующих инструментов, которые помогут вам получить ваш первый запрос на извлечение с открытым исходным кодом, включая Code Triage , IssueHub и, конечно, firstpr.me . Open Sauced - еще один инструмент для помощи, и он является предметом этих исследований GraphQL.

Шаг 1 - Настройка GraphQL Backend

Есть несколько вариантов, чтобы получить серверный сервер GraphQL, в том числе некоторые, которые очень хорошо связываются с экосистемой Apollo . Я выбрал решение, которое не требует управления моим собственным сервером, и это Graphcool . Graphcool предоставляет разработчикам очень расширяемый, готовый к выпуску сервер без сервера GraphQL.

Я создал и реализовал простую схему GraphQL в Graphcool и сделал ее доступной благодаря своему супер-крутому графическому инструменту. Это позволяет мне предоставить простое решение с одним щелчком мыши для развертывания бэкэнд Open Sauced, который может сохранять данные репозитория и прикреплять примечания.

Идите вперед и попробуйте нажать кнопку graphql-up ниже.

graphql-up

Обязательно сохраните свою простую конечную точку Graphcool, чтобы вы могли использовать ее на шаге 3 ниже.

Шаг 2 - Доступ к API-интерфейсу GitHub GraphQL

GitHub представил альфа-версию своего нового API GraphQL на конференции GitHub Universe . Это написано на Facebook GraphQL, языке запросов, который позволяет заключать контракты API самообслуживания. Команда GitHub написала в своем техническом блоге, что их основной причиной переключения API-парадигм является отсутствие масштабируемости с их существующими контрактами RESTful. REST не может обеспечить гибкость, необходимую им, чтобы обслуживать всех своих многочисленных пользователей одновременно, сохраняя при этом низкие затраты на обслуживание.

Я использую этот API GraphQL для получения данных репо для проекта Open Sauced. Красота заключается в том, что мне не нужно открывать обширную документацию API GitHub. Я могу использовать инструменты, такие как GraphiQL, для просмотра документации при построении запросов (как показано ниже).

Для доступа к данным репозитория, использующим функцию Open sauce, вам понадобится маркер доступа GitHub. Вы можете найти инструкции о том, как получить его на GitHub.

Обязательно разрешайте доступ к вашей пользовательской информации при создании маркера. Кроме того, сохраните свой токен, чтобы использовать его на следующем шаге.

Шаг 3 - Развертывание в Netlify Чтобы получить окончательную версию проекта Open Sauce, вы можете использовать кнопку «Развернуть до Netlify» с одним щелчком мыши для клонирования и развертывания проекта.

Развертывание в Netlify

Нажмите кнопку «Развернуть на Netlify» и добавьте маркер доступа GitHub и конечную точку Graphcool. Теперь у вас есть живая версия Netlify, а также клонированная версия репо в GitHub.

Deploy to Netlify

Шаг 4 - Вклад

Полнота этого проекта открыта, поэтому запросы и проблемы с призывом приветствуются.

Клиент React Apollo используется для использования конечной точки GraphQL, и у меня уже есть планы улучшить удобство использования с такими функциями, как мгновенный поиск Algolia для решения проблем и улучшения CSS в JS- решении. Если у вас есть опыт в этих технологиях, не стесняйтесь останавливаться.

Я надеюсь, что этот проект создаст хорошую основу для исследования в GraphQL и поможет уменьшить вероятность заблудиться в соусе.