|
1 | 1 | --- |
2 | 2 | date: 2017-03-26T21:03:44-04:00 |
3 | | -title: Light Java GraphQL |
| 3 | +title: Light GraphQL 4J |
4 | 4 | --- |
5 | 5 |
|
6 | | -[Light Java](https://github.com/networknt/light-java) is a framework built on top |
7 | | -of Undertow core HTTP server that addresses all the cross-cutting concerns for |
8 | | -microservices in the request and response chain. [Light Java REST](https://github.com/networknt/light-java-rest) |
9 | | -is built on top of Light Java and focuses on RESTful services with OpenAPI |
10 | | -specification loaded at runtime to drive security and validation. [Light Java GraphQL](https://github.com/networknt/light-java-graphql) |
11 | | -is based on Light Java and is our solution for [GraphQL](http://graphql.org/) services. |
12 | | - |
13 | | -With Light Java GraphQL, developers can only focus on Schema development and the rest |
14 | | -of the functionalities are provided by the framework. These includes: |
15 | | - |
16 | | -### Common Components |
17 | | - |
18 | | -* [server](https://networknt.github.io/light-java/other/server/) is |
19 | | -a framework on top of Undertow http core that support plugins to perform |
20 | | -different middleware handlers. It is light-weight, fast and supports HTTP/2. |
21 | | - |
22 | | -* [config](https://networknt.github.io/light-java/other/config/) is a module that |
23 | | -supports externalized yml/yaml/json configuration for standalone applications and |
24 | | -docker containers managed by Kubernetes. Config files are managed by |
25 | | -[light-config-server](https://github.com/networknt/light-config-server) and mapped |
26 | | -to Kubernetes ConfigMap and Secrets. |
27 | | - |
28 | | -* [utility](https://networknt.github.io/light-java/other/utility/) contains utility |
29 | | -classes and static variables that are shared between modules. |
30 | | - |
31 | | -* [client](https://networknt.github.io/light-java/other/client/) is a wrapper of |
32 | | -apache HttpClient and HttpAsyncClient. It supports automatically cache and |
33 | | -renew client credentials JWT tokens and manages connection pooling. It is also |
34 | | -responsible for passing correlationId and traceabilityId to the next service. |
35 | | - |
36 | | -* [info](https://networknt.github.io/light-java/other/info/) is a handler that |
37 | | -injects an endpoint /server/info to all server instances so that light-portal |
38 | | -can pull the info to certify all the enabled components and their configuration |
39 | | -at runtime. It also helps while debugging issues on the server. |
40 | | - |
41 | | -* [mask](https://networknt.github.io/light-java/other/mask/) is used to mask |
42 | | -sensitive info before logging. |
43 | | - |
44 | | -* [status](https://networknt.github.io/light-java/other/status/) is used to model |
45 | | -error http response and assist production monitoring with unique error code. |
46 | | - |
47 | | -* [security](https://networknt.github.io/light-java/other/status/) is used by |
48 | | -swagger-security and graphql-security currently but these utilities and helpers can |
49 | | -be used by other security handlers for Role-Based or Attribute-Based Authorization. |
50 | | - |
51 | | -* [balance](https://networknt.github.io/light-java/other/balance/) is a load balance |
52 | | -module that is used by cluster module with service discovery module. It will be called |
53 | | -from client module and be part of client side discovery. |
54 | | - |
55 | | -* [cluster](https://networknt.github.io/light-java/other/cluster/) ia a module caches |
56 | | -discovered services and calling load balance module for load balancing. Part of client |
57 | | -side discovery. |
58 | | - |
59 | | -* [consul](https://networknt.github.io/light-java/other/consul/) is a module manages |
60 | | -communication with Consul server for registry and discovery. |
61 | | - |
62 | | -* [handler](https://networknt.github.io/light-java/other/handler/) is a module defines |
63 | | -middleware handler interface for all middleware components. |
64 | | - |
65 | | -* [Health](https://networknt.github.io/light-java/other/health/) is a health check module |
66 | | -that can be called by API portal to determine if the service is healthy. It supports |
67 | | -cascade health check for databases or message queues. |
68 | | - |
69 | | -* [registry](https://networknt.github.io/light-java/other/registry/) ia an interface |
70 | | -definition and generic direct registry implementation for service registry and discovery. |
71 | | - |
72 | | -* [service](https://networknt.github.io/light-java/other/service/) is a light weight |
73 | | -dependency injection framework for testing and startup hooks. |
74 | | - |
75 | | -* [switcher](https://networknt.github.io/light-java/other/switcher/) is a switcher that |
76 | | -turns things on and off based on certain conditions. |
77 | | - |
78 | | -* [zookeeper](https://networknt.github.io/light-java/other/zookeeper/) is a module manages |
79 | | -communication with ZooKeeper server for service registry and discovery. |
80 | | - |
81 | | -### Middleware Handlers |
82 | | - |
83 | | -* [audit](https://networknt.github.io/light-java/middleware/audit/) logs most important info |
84 | | -about request and response into audit.log in JSON format with config file that controls which |
85 | | -fieds to be logged. |
86 | | - |
87 | | -* [body](https://networknt.github.io/light-java/middleware/body/) is a body parser middleware |
88 | | -that is responsible for parsing the content of the request based on Content-Type in the |
89 | | -request header. |
90 | | - |
91 | | -* [exception](https://networknt.github.io/light-java/middleware/exception/) is a generic |
92 | | -exception handler that handles runtime exception, ApiException and other checked exception |
93 | | -if they are not handled properly in the handler chain. |
94 | | - |
95 | | -* [metrics](https://networknt.github.io/light-java/middleware/metrics/) is a module that collects |
96 | | -API runtime info based on clientId and API name. The metrics info is sent to InfluxDB and |
97 | | -accessible from Grafana Dashboard. |
98 | | - |
99 | | -* [sanitizer](https://networknt.github.io/light-java/middleware/sanitizer/) is a |
100 | | -middleware that address cross site scripting concerns. It encodes header and body based on |
101 | | -configuration. |
102 | | - |
103 | | -* [correlation](https://networknt.github.io/light-java/middleware/correlation/) generates |
104 | | -a UUID in the first API/service and pass it to all other APIs/services in the call tree for |
105 | | -tracking purpose. |
106 | | - |
107 | | -* [traceability](https://networknt.github.io/light-java/middleware/traceability/) is an |
108 | | -id passed in from client and will be unique with an application context. The id will be passed |
109 | | -into the backend and return to the consumer for transaction tracing. |
110 | | - |
111 | | -* [cors](https://networknt.github.io/light-java/middleware/cors/) is a module handles |
112 | | -Cross-Origin Resource Sharing (CORS) pre-flight OPTIONS to support single page applications |
113 | | -from another domain to access APIs/services. |
114 | | - |
115 | | -* [dump](https://networknt.github.io/light-java/middleware/dump/) is a full request/response |
116 | | -log handler to dump everything regarding to request and response into log file for developers. |
117 | | - |
118 | | -* [limit](https://networknt.github.io/light-java/middleware/limit/) is a rate limiting handler |
119 | | -to limit number of concurrent requests on the server. Once the limit is reached, subsequent |
120 | | -requests will be queued for later execution. The size of the queue is configurable. |
121 | | - |
122 | 6 | ### GraphQL Specific Components |
123 | 7 |
|
124 | | -* [graphql-common](https://networknt.github.io/light-java-graphql/components/graphql-common/) |
| 8 | +* [graphql-common](https://networknt.github.io/light-graphql-4j/components/graphql-common/) |
125 | 9 | contains common utilities and static variables that are shared by other components. |
126 | 10 |
|
127 | | -* [graphql-router](https://networknt.github.io/light-java-graphql/components/graphql-router/) |
| 11 | +* [graphql-router](https://networknt.github.io/light-graphql-4j/components/graphql-router/) |
128 | 12 | is responsible for handling GraphQL and GraphiQL requests and hooks schema provider. |
129 | 13 |
|
130 | 14 | ### GraphQL Specific Middleware Handlers |
131 | 15 |
|
132 | | -* [graphql-security](https://networknt.github.io/light-java-graphql/components/graphql-security/) |
| 16 | +* [graphql-security](https://networknt.github.io/light-graphql-4j/components/graphql-security/) |
133 | 17 | verifies JWT token in request header and verifies scopes if it is enabled. |
134 | 18 |
|
135 | | -* [graphql-validator](https://networknt.github.io/light-java-graphql/components/graphql-validator/) |
| 19 | +* [graphql-validator](https://networknt.github.io/light-graphql-4j/components/graphql-validator/) |
136 | 20 | validates the path and methods of the request. Other schema validation will be handled by the |
137 | 21 | GraphQL component. |
0 commit comments