Docs
Launch GraphOS Studio
You're viewing documentation for a previous version of this software. Switch to the latest stable version.

Persisted queries


Automatic persisted queries

Apollo Android supports Automatic Persisted Queries. Your server needs to supports it (apollo-server supports it out of the box). Enable the feature in apollo-android like so:

ApolloClient.builder()
/* ... */
.enableAutoPersistedQueries(true)
/* ... */
.build()

You can optionally configure apollo-android to send GET HTTP verbs for queries, to benefit from caching if your server uses a CDN:

ApolloClient.builder()
/* ... */
.enableAutoPersistedQueries(true)
.useHttpGetMethodForQueries(true)
/* ... */
.build()

operationOutput.json

If your backend uses custom , Apollo Android can generate an Output json from your . queries. They will match what the client is sending exactly so you can persist them on your server.

apollo {
generateOperationOutput = true
}

Custom ID for Persisted Queries

By default, Apollo uses Sha256 hashing algorithm to generate an ID for the . To provide custom ID generation logic, use the option - operationIdGenerator which accepts an instance that implements the OperationIdGenerator interface (com.apollographql.apollo.compiler.OperationIdGenerator) as the input. This option can be used to either specify a different hashing algorithm or to fetch the ID from a different place - e.g. a service or a CLI.

Example Md5 hash generator:

apollo {
operationIdGenerator.set(object: com.apollographql.apollo.compiler.OperationIdGenerator {
override val version = "my-md5-version1"
override fun apply(operationDocument: String, operationFilepath: String): String {
return operationDocument.md5()
}
})
}
import com.apollographql.apollo.compiler.OperationIdGenerator
apollo {
operationIdGenerator = new OperationIdGenerator() {
String apply(String operationDocument, String operationFilepath) {
return operationDocument.md5()
}
/**
* Use this version override to indicate an update to the implementation.
* This forces gradle to recompile models.
*/
String version = "my-md5-v1"
}
}

Versioning Id Generator

The result of the ID generator is cached. The cache is not updated when the implementation of the ID Generator changes. To indicate an update to the implementation of the ID Generator, change the version override as shown in the above example.

Previous
HTTP cache
Next
Using aliases
Edit on GitHubEditForumsDiscord

© 2024 Apollo Graph Inc.

Privacy Policy

Company