Skip to main content

REST Resolver

When writing queries and mutations that use a REST service, you'll have access to resolvers that execute many of the standard HTTP request methods on the connected service.


name​

The REST resolver name determines the REST method to be used in the request.

values​

  • rest:get
  • rest:post
  • rest:delete
  • rest:head
  • rest:put
  • rest:patch

path​

Type​

(ParameterConfig | string)!

Description​

The resource path your resolver is accessing on the REST service. This is appended to the service's base path when making requests.

The path can be a string or a ParameterConfig object. As a string it will be appended, as a ParameterConfig it will be processed and placed in the serialize.template. Read more about the path config.


options​

The options object contains configuration specific to the type of resolver you select.


timeout​

Type​

number?

Description​

The number of milliseconds to allowed before timing out. The default is no timeout.


ttl​

Type​

number?

Description​

A time in milliseconds to cache a response.

The number of seconds to cache request results for. This setting only applies to rest:get resolvers.


retry​

Type​

number | RetryOptions?

Description​

A number or object that is passed through to the got retry config.

If a retry configuration is specified in both the resolver options and the service configuration, the retry configurations are merged with the resolver taking precedence.


trailingSlash​

Type​

boolean?

Description​

If set to true will ensure your URLs have a trailing slash. If set to false will ensure they do not.


ignoreErrors​

Type​

boolean?

Description​

If set to true any error response will return null instead of throwing the error. This is helpful in situations where you would not want to blow up your entire response for an error in a single field. For instance, in an @resolver, this would allow for the parent object's data to change in ways that may not be acceptable for your REST request.

Example​

{
"MyShape": {
"id": "MyShape",
"name": "MyShape",
"title": "MyShape",
"schema": {
"type": "object",
"properties": {
"myExternalId": {
"type": "string"
},
"myExternalObject": {
"@resolver": {
"if": "!isEmpty($source.myExternalId)",
"name": "rest:get",
"service": "my-service",
"path": {
"ops": [
{
"path": "objectId",
"mapping": "$source.myExternalId"
}
],
"serialize": {
"template": "objects/{objectId}"
}
},
"options": {
"ignoreErrors": true
}
}
}
}
}
}
}
let results = {
errors: [
{
message: 'bad-value is a no good',
locations: [
{
line: 2,
column: 25
}
],
type: 'GraphQLError'
}
]
};
let results = {
data: {
myExternalId: 'bad-value',
myExternalObject: null
}
};
let results = {
data: {
myExternalId: 'good-value',
myExternalObject: {
id: 'good-value',
goodTimes: 'Great Oldies'
}
}
};

searchParams​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to the searchParams (or query params) for the resolver's request. For more information read about the Resolver.searchParams property.


form​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to a form body for the resolver's request. For more information read about the Resolver.form property.


json​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to a JSON object for the resolver's request. For more information read about the Resolver.json property.


body​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to the body for the resolver's request. For more information read about the Resolver.body property.


headers​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to the headers for the resolver's request. For more information read about the Resolver.headers property.


results​

Type​

ParameterConfig?

Description​

Allows mapping from the QueryContext to the headers for the resolver's request. For more information read about the Resolver.results property.