-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
194 lines (184 loc) · 12 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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
<!DOCTYPE html>
<html lang="en" data-framework="componentjs">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>GraphQL Network Communication Framework</title>
<link rel="shortcut icon" href="gemstone-icon.ico">
<link href="lib/normalize/normalize.css" rel="stylesheet" type="text/css"/>
<link href="lib/typopro/TypoPRO-OpenSans/TypoPRO-OpenSans.css" rel="stylesheet" type="text/css"/>
<link href="lib/typopro/TypoPRO-DejaVu/TypoPRO-DejaVu.css" rel="stylesheet" type="text/css"/>
<link href="lib/typopro/TypoPRO-Journal/TypoPRO-Journal.css" rel="stylesheet" type="text/css"/>
<link href="lib/font-awesome/font-awesome.css" rel="stylesheet" type="text/css"/>
<script src="lib/syntax/syntax.js" type="text/javascript"></script>
<script src="lib/jquery/jquery.js" type="text/javascript"></script>
<script src="lib/swiper/swiper.js" type="text/javascript"></script>
<link href="lib/swiper/swiper.css" rel="stylesheet" type="text/css"/>
<link href="lib/combinumerals/CombiNumeralsLtd.css" rel="stylesheet" type="text/css"/>
<link href="lib/gridless/eg12.css" rel="stylesheet" type="text/css"/>
<link href="lib/bootstrap/bootstrap.css" rel="stylesheet" type="text/css"/>
<link href="lib/bootstrap/bootstrap-theme.css" rel="stylesheet" type="text/css"/>
<script src="lib/bootstrap/bootstrap.js" type="text/javascript"></script>
<link href="index.css" rel="stylesheet" type="text/css"/>
<script src="index.js" type="text/javascript"></script>
</head>
<body>
<a href="https://github.com/rse/graphql-io" class="forkme" style="position: absolute; top: 0; right: 0; border: 0; display: block; z-index: 300;">
<img src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png" alt="Fork me on GitHub">
</a>
<div class="canvas">
<div class="header">
<div class="margin"></div>
<div class="image">
<img src="graphql-io-logo.svg"/>
</div>
<div class="margin"></div>
</div>
<div class="nav">
<ul class="nav nav-pills nav-justified">
<li role="presentation" class="select-button active"><a href="#overview">Overview</a></li>
<li role="presentation" class="select-button"><a href="#sample">Sample</a></li>
<li role="presentation" class="select-button"><a href="#architecture">Architecture</a></li>
<li role="presentation" class="select-button"><a href="#api">API</a></li>
</ul>
</div>
<div class="content">
<div class="swiper-container">
<div class="swiper-wrapper">
<div class="swiper-slide slide1" data-hash="overview">
<div class="g-row" style="width: 100%;">
<div class="g-col-5-12">
<div class="headline">Overview</div>
<p>
<b>GraphQL-IO Server Java </b> is an opinionated MIT-licensed <a href="http://graphql.org/">GraphQL</a>-based
network communication framework for Java. The aim of GraphQl IO java is to provide the server-side implementation of original GraphQL-IO.
The server-side runs under Java 8.
</p>
<p>
While <a href="http://graphql.org/">GraphQL</a> is just a formal language
specification and <a href="http://graphql.org/graphql-js/">GraphQL.js</a> is a reference
implementation of a corresponding execution engine,
<b>GraphQL-IO</b> is an entire <i>all-in-one</i> GraphQL-based network communication solution
for both client and server.
</p>
<p>
It integrates the necessary third-party libraries,
provides a convenient and flexible API and especially supports real-time
updates of GraphQL queries (aka GraphQL subscriptions) over a high-performance, framed,
and optionally compressed, WebSocket channel.
</p>
</div>
<div class="g-off-1-12 g-col-6-12">
<div class="headline">Technologies</div>
<p>
On the server-side, <b>GraphQL-IO</b> it is based on the GraphQL engine <a href="https://github.com/graphql-java/graphql-java">GraphQL.js</a>,
the GraphQL schema execution library <a href="https://github.com/graphql-java-kickstart/graphql-java-tools">GraphQL-Tools</a>,
the GraphQL type definition library <a href="https://github.com/Thinkenterprise/graphql-tools-types-java">GraphQL-Tools-Types</a>,
the GraphQL subscription management library <a href="https://github.com/Thinkenterprise/graphql-tools-subscribe-java">GraphQL-Tools-Subscribe</a>,
the network communication framework <a href="https://netty.io">Netty</a>,
the WebSocket integration plugin <a href="https://github.com/Thinkenterprise/netty-plugin-websocket">Netty-Plugin-WebSocket</a>,
the underlying WebSocket frame library <a href="https://github.com/Thinkenterprise/websocket-framed-java">WebSocket-Framed</a>
and the <a href="https://github.com/graphql/graphiql">GraphiQL</a> integration plugin
<a href="https://github.com/Thinkenterprise/netty-plugin-graphiql">Netty-Plugin-GraphiQL</a><sup>*</sup>.
</p>
<p>
For details on how these libraries are itegrated and play together, please see
the <a href="#architecture">Architecture</a> page.
</p>
</div>
</div>
</div>
<div class="swiper-slide slide3" data-hash="sample">
<div class="g-row" style="width: 100%;">
<div class="g-col-9-12">
<div class="headline">Sample</div>
<p>
A Hello World sample for <b>GraphQL-IO Server Java </b> can look like the following.
For more elaborate examples, check out the <b>GraphQL-IO</b> <a href="https://github.com/Thinkenterprise/graphql-io-server-java/tree/master/src/samples">Server Samples</a>
</p>
<p>
<b>Hello World Java Server:</b>
<div data-syntax="java">
@SpringBootApplication
public class SampleHelloWorldApplication implements ApplicationRunner {
@Autowired
private GsServer gsServer;
@Autowired
SampleHelloWorldResolver helloWorldResolver;
public static void main(String[] args) {
SpringApplication.run(SampleHelloWorldApplication.class, args);
}
public void run(ApplicationArguments args) throws Exception {
gsServer.registerGraphQLResolver(helloWorldResolver);
gsServer.start();
}
}
</div>
</p>
</div>
</div>
</div>
<div class="swiper-slide slide4" data-hash="architecture">
<div class="g-row" style="width: 100%;">
<div class="g-col-12-12">
<div class="headline">Architecture</div>
<p>
As mentioned on the <a href="#overview">Overview</a> page,
<b>GraphQL-IO Server Java</b> is primarily the glue between a dozen GraphQL partial solutions
and as such is actually an extensive integration effort. The following
diagram shows the <i>Functional View</i> of the <b>GraphQL-IO</b> architecture
for the and server-side.
</p>
<p>
<a href="graphql-io-architecture.pdf">
<img src="graphql-io-architecture.png" width="100%"/>
</a>
</p>
</div>
</div>
</div>
<div class="swiper-slide slide5" data-hash="api">
<div class="g-row" style="width: 100%;">
<div class="g-col-9-12">
<div class="headline">API Documentation</div>
<p>
<b>GraphQL-IO Java</b> has an simple Application Programming Interface (API) for the <b>GraphQL-IO Java</b> Server.
</p>
<p>
<ul>
<li><a href="https://msg-systems.github.io/graphql-io-java-doc/"><b>GraphQL-IO</b> Server API Documentation</a></li>
</ul>
</p>
<p>
To see most of the API functionality in practice, check out the
<b>GraphQL-IO</b> <a href="https://github.com/Thinkenterprise/graphql-io-server-java/tree/master/src/samples/java/com/graphqlio/server/samples">Samples</a>.
</p>
</div>
</div>
<div class="g-row" style="width: 100%;">
<div class="g-col-9-12">
<div class="headline">API</div>
<p>
<ul>
<li><a href="https://github.com/Thinkenterprise/graphql-io-server-java/blob/master/src/main/java/com/graphqlio/server/server/GsServer.java"><b>GraphQL-IO</b> Server API</a></li>
</ul>
</p>
</div>
</div>
</div>
</div>
<div class="swiper-pagination"></div>
<div class="swiper-scrollbar"></div>
</div>
<div class="icons">
<i class="fa fa-chevron-circle-left"></i>
<i class="fa fa-chevron-circle-right"></i>
</div>
</div>
<div class="footer">
Copyright © 2020-2021 <a href="http://engelschall.com">Michael Schäfer</a><br/>
Licensed under <a href="https://spdx.org/licenses/MIT">MIT License</a>
</div>
</div>
</body>
</html>