Справочная реализация на JavaScript для GraphQL — языка запросов для API, созданного Facebook.
Для более полной документации посетите https://graphql.org/ и https://graphql.org/graphql-js/.
Ищете помощь? Найдите ресурсы от сообщества.
Обзор GraphQL в целом доступен в README для Спецификации GraphQL. Этот обзор описывает простое множество примеров GraphQL, которые существуют как тесты в этом репозитории. Хороший способ начать работу с этим репозиторием — пройти через этот README и соответствующие тесты параллельно.
Установите GraphQL.js из npm
С помощью npm:
npm install --save graphql
или альтернативно, используя yarn:
yarn add graphql
GraphQL.js предоставляет две важные возможности: построение схемы типов и обработку запросов против этой схемы типов.
Сначала, постройте схему типов GraphQL, которая соответствует вашему коду.
import {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLString,
} from 'graphql';
var schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'RootQueryType',
fields: {
hello: {
type: GraphQLString,
resolve() {
return 'world';
},
},
},
}),
});
```Это определяет простую схему с одним типом и одним полем, которое разрешается
к фиксированному значению. Функция `resolve` может вернуть значение, промис,
или массив промисов. Более сложный пример включен в верхнем уровне
[тестов](src/__tests__) директории.
Затем, обработайте результат запроса против этой схемы типов.
```js
var query = '{ hello }';
graphql(schema, query).then((result) => {
// Выводит
// {
// data: { hello: "мир" }
// }
console.log(result);
});
Этот запрос извлекает определенное поле. Функция graphql
сначала проверяет синтаксическую и семантическую корректность запроса перед его выполнением, в противном случае отображает ошибки.
var query = '{ BoyHowdy }';
graphql(schema, query).then((result) => {
// Выводит
// {
// errors: [
// { message: 'Невозможно запросить поле BoyHowdy на RootQueryType',
// locations: [ { line: 1, column: 3 } ] }
// ]
// }
console.log(result);
});
Примечание: Не забудьте установить NODE_ENV=production
, если вы запускаете сервер в режиме production. Это отключит некоторые проверки, которые могут быть полезны во время разработки, но значительно улучшат производительность.
npm
в этом репозитории автоматически поддерживается, чтобы быть последним коммитом к master
, который прошёл все тесты, в том же виде, как он представлен на npm. Рекомендуется использовать сборки, развернутые на npm, по многим причинам, но если вы хотите использовать самую последнюю, ещё не выпущенную версию graphql-js, вы можете сделать это, завися напрямую от этой ветки:```npm install graphql@git://github.com/graphql/graphql-js.git#npm
### Использование в браузере
GraphQL.js — это универсальная библиотека и может использоваться как на сервере Node, так и в браузере. Например, инструмент [GraphiQL](https://github.com/graphql/graphiql/) построен с использованием GraphQL.js!
Создание проекта с использованием GraphQL.js с помощью [webpack](https://webpack.js.org) или [rollup](https://github.com/rollup/rollup) должно работать без проблем и включать только те части библиотеки, которые вы используете. Это работает благодаря тому, что GraphQL.js распространяется с файлами CommonJS (`require()`) и ESModule (`import`). Убедитесь, что любые пользовательские конфигурации сборки ищут файлы `.mjs`!
### Вклад
Мы активно приветствуем pull requests, узнайте, как [вносить вклад](https://github.com/graphql/graphql-js/blob/master/.github/CONTRIBUTING.md).
### Изменения
Изменения отслеживаются как [GitHub releases](https://github.com/graphql/graphql-js/releases).
### Лицензия
GraphQL.js распространяется под лицензией [MIT](https://github.com/graphql/graphql-js/blob/master/LICENSE).
### Кредиты
Файлы `*.d.ts` в этом проекте основаны на [DefinitelyTyped](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/54712a7e28090c5b1253b746d1878003c954f3ff/types/graphql) определениях, написанных:- Тони Янг https://github.com/TonyPythoneer
- Кaleb Меррит https://github.com/calebmer
- Доминик Уотсон https://github.com/intellix
- Firede https://github.com/firede
- Кепеннар https://github.com/kepennar
- Михаил Новиков https://github.com/freiksenet
- Иван Гончаров https://github.com/IvanGoncharov
- Хагай Коэн https://github.com/DxCx
- Рикардо Португал https://github.com/rportugal
- Тим Гриессер https://github.com/tgriesser
- Дилан Стюарт https://github.com/dyst5422
- АLESSIO ДИОНИСИ https://github.com/adnsio
- Дивйенду СИНГ https://github.com/divyenduz
- БРАД ЗАЧЕР https://github.com/bradzacher
- Кёртис Лейн https://github.com/clayne11
- Джонатан Кардосо https://github.com/JCMais
- Павел Ланг https://github.com/langpavel
- Марк Каудилл https://github.com/mc0
- Мартиньен Вальравен https://github.com/martijnwalraven
- Джед Мао https://github.com/jedmao
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )