close

Filter

loading table of contents...

Headless Server Developer Manual / Version 2406.0

Table Of Contents

9.1.1 Defining Persisted Queries in Plain GraphQL

All resources matching the pattern configured with the property caas.persisted-queries.query-resources-pattern are loaded as persisted queries, one query per resource file. The filename without extension serves as the query ID. The pattern must be suitable for a Spring PathMatchingResourcePatternResolver which is used to load these resources.

The default pattern is classpath:graphql/queries/*.graphql, which means that all resource files within the graphql/queries directory are loaded if they have the graphql file extension.

Actually, not all resource files matching this pattern might be loaded - there is a configuration property caas.persisted-queries.exclude-file-name-pattern that specifies a regular expression for resource files to be ignored.

This pattern defaults to .*Fragment(s)?.graphql which is useful to skip resource files holding reusable query fragments. These fragments may then be included into a query file by means of the #import directive. The following is an example query including fragments from the resource referenceFragments.graphql:

query ArticleQuery($id: String!) {
  content {
    article(id: $id) {
      ... Reference
      title
      detailText
      teaserTitle
      teaserText
    }
  }
}
#import "./referenceFragments.graphql"

If this query is saved in a resource file with the name article.graphql, the query will have the ID article. Therefore, you may now send an HTTP GET request with just this ID instead of the query string (mind URL encoding):

wget -q -O -  'http://myheadlessserver:41180/graphql \
      ?query=PersistedQueryMarker \
      &extensions={"persistedQuery": {"version": 1,"queryId": "article"}} \
      &variables={"id":"1556"}'

Search Results

Table Of Contents
warning

Your Internet Explorer is no longer supported.

Please use Mozilla Firefox, Google Chrome, or Microsoft Edge.