❗ BREAKING ❗
Move experimental.traffic_shaping
out of experimental
PR #1229
You will need to update your YAML configuration file to use the correct name for traffic_shaping
plugin.
- plugins:
- experimental.traffic_shaping:
- variables_deduplication: true # Enable the variables deduplication optimization
- all:
- query_deduplication: true # Enable query deduplication for all subgraphs.
- subgraphs:
- products:
- query_deduplication: false # Disable query deduplication for products.
+ traffic_shaping:
+ variables_deduplication: true # Enable the variables deduplication optimization
+ all:
+ query_deduplication: true # Enable query deduplication for all subgraphs.
+ subgraphs:
+ products:
+ query_deduplication: false # Disable query deduplication for products.
Rhai plugin request.sub_headers
renamed to request.subgraph.headers
PR #1261
Rhai scripts previously supported the request.sub_headers
attribute so that subgraph request headers could be
accessed. This is now replaced with an extended interface for subgraph requests:
request.subgraph.headers
request.subgraph.body.query
request.subgraph.body.operation_name
request.subgraph.body.variables
request.subgraph.body.extensions
request.subgraph.uri.host
request.subgraph.uri.path
🚀 Features
Add support of compression PR #1229
Add support of request and response compression for the router and all subgraphs. The router is now able to handle Content-Encoding
and Accept-Encoding
headers properly. Supported algorithms are gzip
, br
, deflate
.
You can also enable compression on subgraphs requests and responses by updating the traffic_shaping
configuration:
traffic_shaping:
all:
compression: br # Enable brotli compression for all subgraphs
subgraphs:
products:
compression: gzip # Enable gzip compression only for subgraph products
Add support of multiple uplink URLs PR #1210
Add support of multiple uplink URLs with a comma-separated list in APOLLO_UPLINK_ENDPOINTS
and for --apollo-uplink-endpoints
Example:
export APOLLO_UPLINK_ENDPOINTS="https://aws.uplink.api.apollographql.com/, https://uplink.api.apollographql.com/"
Add support for adding extra environment variables and volumes to helm chart PR #1245
You can mount your supergraph.yaml
into the helm deployment via configmap. Using Kustomize to generate your configmap from your supergraph.yaml is suggested.
Example configmap.yaml snippet:
supergraph.yaml:
server:
listen: 0.0.0.0:80
Example helm config:
extraEnvVars:
- name: APOLLO_ROUTER_SUPERGRAPH_PATH
value: /etc/apollo/supergraph.yaml
# sets router log level to debug
- name: APOLLO_ROUTER_LOG
value: debug
extraEnvVarsCM: ''
extraEnvVarsSecret: ''
extraVolumes:
- name: supergraph-volume
configMap:
name: some-configmap
extraVolumeMounts:
- name: supergraph-volume
mountPath: /etc/apollo
By @LockedThread in #1245
🐛 Fixes
Support introspection object types (PR #1240)
Introspection queries can use a set of object types defined in the specification. The query parsing code was not recognizing them,
resulting in some introspection queries not working.
Update the scaffold template so that it works with streams (#1247)
Release v0.9.4 changed the way we deal with Response
objects, which can now be streams.
The scaffold template has been updated so that it generates plugins that are compatible with the new Plugin API.
By @o0Ignition0o in #1248
Create the ExecutionResponse
after the primary response was generated (PR #1260)
The @defer
preliminary work had a surprising side effect: when using methods like RouterResponse::map_response
, they were
executed before the subgraph responses were received, because they work on the stream of responses.
This PR goes back to the previous behaviour by awaiting the primary response before creating the ExecutionResponse
.
Use the API schema to generate selections (PR #1255)
When parsing the schema to generate selections for response formatting, we should use the API schema instead of the supergraph schema.
📚 Documentation
Update README link to the configuration file (PR #1208)
As the structure of the documentation has changed, the link should point to the YAML config file
section of the overview.