@dillonkearns/elm-graphql
Version:
<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">
134 lines (96 loc) • 3.55 kB
Markdown
The JavaScript reference implementation for GraphQL, a query language for APIs created by Facebook.
[](http://badge.fury.io/js/graphql)
[](https://travis-ci.org/graphql/graphql-js?branch=master)
[](https://coveralls.io/r/graphql/graphql-js?branch=master)
See more complete documentation at http://graphql.org/ and
http://graphql.org/graphql-js/.
Looking for help? Find resources [from the community](http://graphql.org/community/).
An overview of GraphQL in general is available in the
[](https://github.com/facebook/graphql/blob/master/README.md) for the
[](https://github.com/facebook/graphql). That overview
describes a simple set of GraphQL examples that exist as [tests](src/__tests__)
in this repository. A good way to get started with this repository is to walk
through that README and the corresponding tests in parallel.
Install GraphQL.js from npm
With yarn:
```sh
yarn add graphql
```
or alternatively using npm:
```sh
npm install --save graphql
```
GraphQL.js provides two important capabilities: building a type schema, and
serving queries against that type schema.
First, build a GraphQL type schema which maps to your code base.
```js
import {
graphql,
GraphQLSchema,
GraphQLObjectType,
GraphQLString
} from 'graphql';
var schema = new GraphQLSchema({
query: new GraphQLObjectType({
name: 'RootQueryType',
fields: {
hello: {
type: GraphQLString,
resolve() {
return 'world';
}
}
}
})
});
```
This defines a simple schema with one type and one field, that resolves
to a fixed value. The `resolve` function can return a value, a promise,
or an array of promises. A more complex example is included in the top
level [tests](src/__tests__) directory.
Then, serve the result of a query against that type schema.
```js
var query = '{ hello }';
graphql(schema, query).then(result => {
// Prints
// {
// data: { hello: "world" }
// }
console.log(result);
});
```
This runs a query fetching the one field defined. The `graphql` function will
first ensure the query is syntactically and semantically valid before executing
it, reporting errors otherwise.
```js
var query = '{ boyhowdy }';
graphql(schema, query).then(result => {
// Prints
// {
// errors: [
// { message: 'Cannot query field boyhowdy on RootQueryType',
// locations: [ { line: 1, column: 3 } ] }
// ]
// }
console.log(result);
});
```
The `npm` branch in this repository is automatically maintained to be the last
commit to `master` to pass all tests, in the same form found on npm. It is
recommend to use builds deployed npm for many reasons, but if you want to use
the latest not-yet-released version of graphql-js, you can do so by depending
directly on this branch:
```
npm install graphql@git://github.com/graphql/graphql-js.git#npm
```
We actively welcome pull requests, learn how to
[](https://github.com/graphql/graphql-js/blob/master/CONTRIBUTING.md).
Changes are tracked as [GitHub releases](https://github.com/graphql/graphql-js/releases).
GraphQL.js is [MIT-licensed](https://github.com/graphql/graphql-js/blob/master/LICENSE).