forked from rmosolgo/graphql-ruby
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
109 lines (108 loc) · 4.87 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
---
title: Welcome
fullwidth: false
---
<div class="hero">
<div class="hero-title">
<img class="graphql-ruby-img" src="{{ site.baseurl }}/graphql-ruby.png" alt="GraphQL Ruby Logo"/>
<h1>GraphQL Ruby</h1>
</div>
<div class="hero-subtitle">
<p>The <code>graphql</code> gem implements the <a href="https://spec.graphql.org/draft/">GraphQL Server Specification</a> in Ruby.</p>
<p>Use it to add a GraphQL API to your Ruby or Rails app.</p>
</div>
<div class="hero-part shaded">
<div class="hero-feature">
<h2>Install the Gem</h2>
<p>
<a href="{{ site.baseurl}}/getting_started">Get going fast</a> with the <code><a href="https://rubygems.org/gems/graphql">graphql</a></code> gem,
battle-tested and trusted by <a href="https://githubengineering.com/the-github-graphql-api/#open-source">GitHub</a>, <a href="https://www.graphql.com/articles/graphql-at-shopify">Shopify</a>, <a href="https://flexport.com">Flexport</a>, </a><a href="https://www.chime.com">Chime</a>, and <a href="https://www.kickstarter.com/">Kickstarter</a>.
</p>
{% highlight bash %}
# Download the gem:
bundle add graphql
# Setup with Rails:
rails generate graphql:install
{% endhighlight %}
</div>
<div class="hero-feature">
<h2>Define Your Schema</h2>
<p>
Describe your application with a
<a href="{{ site.baseurl }}/schema/definition">GraphQL schema</a>
to create a self-documenting, strongly-typed API.
</p>
{% highlight ruby %}
# app/graphql/types/profile_type.rb
class Types::ProfileType < Types::BaseObject
field :id, ID, null: false
field :name, String, null: false
field :avatar, Types::PhotoType
end
{% endhighlight %}
</div>
</div>
<div class="hero-part">
<div class="hero-feature">
<h2>Serve Queries</h2>
<p>
Provide custom data to clients and extend your API with
{% internal_link "mutations", "/mutations/mutation_root" %},
{% internal_link "subscriptions", "/subscriptions/overview" %},
{% internal_link "streaming responses", "/defer/overview" %},
and {% internal_link "multiplexing", "/queries/multiplex" %}.
</p>
{% highlight ruby %}
# app/controllers/graphql_controller.rb
result = MySchema.execute(
params[:query],
variables: params[:variables],
context: { current_user: current_user },
)
render json: result
{% endhighlight %}
</div>
<div class="hero-feature">
<h2>Harden Your API</h2>
<p>
Confidently deploy GraphQL with GraphQL-Ruby:
<ul>
<li>{% internal_link "Testing helpers", "/testing/overview" %} to validate your system</li>
<li>{% internal_link "Authorization", "/authorization/overview" %} integrates with your app's permission system</li>
<li>{% internal_link "GraphQL::Dataloader", "/dataloader/overview" %} optimizes access to data sources</li>
<li>{% internal_link "Complexity limits", "/queries/complexity_and_depth" %}, {% internal_link "timeouts", "/queries/timeout" %}, and {% internal_link "rate limits", "/limiters/overview" %} to protect your server resources</li>
<li>{% internal_link "Tracing", "/queries/tracing" %} for integration with your APM or custom usage</li>
<li>{% internal_link "API versioning", "/changesets/overview" %} to roll out changes while preserving client experience</li>
<li>{% internal_link "Persisted queries", "/operation_store/overview" %} to guarantee approved API usage </li>
<li>{% internal_link "Caching", "/object_cache/overview" %} to serve repeated data requests</li>
</ul>
</p>
</div>
</div>
<div class="hero-part shaded">
<div class="hero-feature">
<h2>Integrate with Client Libraries</h2>
<p>
<code>{% internal_link "graphql-ruby-client", "/javascript_client/overview" %}</code> provides integration with
{% internal_link "Apollo Client", "/javascript_client/apollo_subscriptions" %},
{% internal_link "Relay", "/javascript_client/relay_subscriptions" %},
{% internal_link "GraphiQL", "/javascript_client/graphiql_subscriptions" %},
{% internal_link "urql", "/javascript_client/urql_subscriptions" %}, or custom JavaScript.
</p>
</div>
<div class="hero-feature">
<h2>Going Beyond</h2>
<p>
Customize your GraphQL API:
<ul>
<li>{% internal_link "Language tooling", "/language_tools/visitor/ %} for manipulating GraphQL documents</li>
<li>{% internal_link "Type system extensions", "/type_definitions/extensions/ %} for customizing your schema definition</li>
<li>{% internal_link "Query analysis", "/queries/ast_analysis" %} for ahead-of-time query inspection</li>
</ul>
</p>
</div>
</div>
</div>
<h3 style="text-align: center; margin: 50px auto;">
Add <a href="https://graphql.org">GraphQL</a> to your Ruby app. <a href="/getting_started">Get Started!</a>
</h3>