Весной 2020 года Райан Даль выпустил Deno 1.0.0. После релиза Deno вызвал большой интерес в веб-сообществе. Так что же такое Дено? Deno - это то, что Райан, оглядываясь назад, хотел бы сделать при создании Node. Были сделаны улучшения в отношении безопасности, управления пакетами и поддержки TypeScript, и это лишь некоторые из них.
Далее к теме статьи. GraphQL в Deno.
Весь наш импорт поступает из Oak, который является фреймворком веб-сервера для Deno. Те, кто знаком с Express в Node, будут чувствовать себя в Oak как дома.
Мы создаем нашу схему GraphQL, вызывая функцию gql со строкой шаблона, описывающей схему. Схема определяет динозавра с именем и изображением. Обратите внимание, что изображение - это просто строка, поскольку в нем используется смайлик. В схеме указано 2 запроса. Один для поиска всех динозавров и один для поиска определенного динозавра. Наконец, схема определяет мутацию, которая добавляет одного динозавра.
В этом руководстве мы сохраняем наши данные в переменной. Поэтому перезапуск сервера приведет к сбросу данных. Но он хорошо работает для опробования Oak и GraphQL.
Далее мы реализуем наши три резолвера. В наших преобразователях выполняется поиск, возврат или расширение массива динозавров. В последнем случае вместо возврата данных мы возвращаем логическое значение для указания. См. В схеме ResolveType.
Все, что осталось, это запустить наш сервер. Мы делаем это, сначала передавая нашу схему (переменную типов) и наш преобразователь в функцию Oaks applyGraphQL, и из этого вызова мы получаем обратно GraphQLService. Мы передаем это нашему экземпляру приложения Oak, как показано в примере.
Наконец, мы начинаем прослушивать запросы GraphQL POST на порту 8080!
Теперь мы можем выполнить POST в / graphql на порту 8080 с полезными данными:
Вот и все!
Удачного взлома и не стесняйтесь обращаться за вопросами или комментариями.
Видео этого точного руководства:
https://www.youtube.com/watch?v=Rc_HhL55JZM
Код: https://gist.github.com/danba340/ce04651f8fc14bcb974fb4b940d95bdd
Twitter: https://twitter.com/BarelyDaniel