Skip to content
This repository was archived by the owner on Jul 25, 2024. It is now read-only.

graphql-elixir/plug_graphql

Repository files navigation

GraphQL Plug

Build Status Public Slack Discussion

plug_graphql is a Plug integration for the GraphQL Elixir implementation of Facebook's GraphQL.

This Plug allows you to easily mount a GraphQL endpoint in Phoenix. This example project shows you how:

Installation

  1. Make a new Phoenix app, or add it to your existing app.
```sh mix phoenix.new hello_graphql cd hello_graphql ``` ```sh git clone https://github.com/graphql-elixir/hello_graphql_phoenix ``` 
  1. Add plug_graphql to your list of dependencies and applications in mix.exs and install the package with mix deps.get.
```elixir def application do # Add the application to your list of applications. # This will ensure that it will be included in a release. [applications: [:logger, :plug_graphql]] end def deps do [{:plug_graphql, "~> 0.3.1"}] end ``` 

Usage

  1. Define a simple schema in web/graphql/test_schema.ex:
```elixir defmodule TestSchema do def schema do %GraphQL.Schema{ query: %GraphQL.Type.ObjectType{ name: "Hello", fields: %{ greeting: %{ type: %GraphQL.Type.String{}, args: %{ name: %{ type: %GraphQL.Type.String{} } }, resolve: {TestSchema, :greeting} } } } } end def greeting(_, %{name: name}, _), do: "Hello, #{name}!" def greeting(_, _, _), do: "Hello, world!" end ``` 
  1. Your api pipeline should have this as a minimum:
```elixir pipeline :api do plug :accepts, ["json"] end ``` 
  1. Mount the GraphQL endpoint as follows:
```elixir scope "/api" do pipe_through :api forward "/", GraphQL.Plug, schema: {TestSchema, :schema} end ``` 
  1. Start Phoenix
```sh mix phoenix.server ``` 
  1. Open your browser to http://localhost:4000/api?query={greeting} and you should see something like this:
```json { "data": { "greeting": "Hello, world!" } } ``` 

Contributions

This is pretty early days, the GraphQL Elixir ecosystem needs a lot more work to be useful.

However we can't get there without your help, so any questions, bug reports, feedback, feature requests and/or PRs are most welcome!

Acknowledgements

Thanks and appreciation goes to the following contributors for PRs, discussions, answering many questions and providing helpful feedback:

Thanks also to everyone who has submitted PRs, logged issues, given feedback or asked questions.

About

Plug (Phoenix) integration for GraphQL Elixir

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Contributors 6