The SDK helps users serialize query parameters from a JavaScript object to a query string. It exposes two helper functions:
sharetribeSdk.util.objectQueryStringsharetribeSdk.util.queryStringsharetribeSdk.util.objectQueryStringQuering custom image variats with Sharetribe Marketplace API requires a specific syntax that allows passing one or more key-value pairs as the value of a single query parameter. The keys and values are colon-separated whereas the pairs are separated by semicolons. For example, when requesting custom image variants:
sdk.listings.show({
id: listingId,
include: ['images'],
'fields.image': ['variants.my-variant'],
'imageVariant.my-variant': 'w:640;h:1280;fit:scale'
}).then(res => {
// res.data contains the response data
});
To simplify building requests like these, the SDK provides a utility method:
sharetribeSdk.util.objectQueryString. It serializes an object into the correct
string syntax. Using this method, the request above can be written as follows:
sdk.listings.show({
id: listingId,
include: ['images'],
'fields.image': ['variants.my-variant'],
'imageVariant.my-variant': sharetribeSdk.util.objectQueryString({
w: 640,
h: 1280,
fit: 'scale'
})
}).then(res => {
// res.data contains the response data
});
sharetribeSdk.util.queryStringThe SDK exposes the sharetribeSdk.util.queryString function, which takes a JavaScript object and returns a query string. For example:
sharetribeSdk.util.queryString({
id: new UUID('d89795b4-4a8d-4969-8a9c-54e95729644d'),
include: ['images'],
'fields.image': ['variants.my-variant'],
'imageVariant.my-variant': sharetribeSdk.util.objectQueryString({
w: 640,
h: 1280,
fit: 'scale'
})
})
// Returns: 'id=d89795b4-4a8d-4969-8a9c-54e95729644d&include=images&fields.image=variants.my-variant&imageVariant.my-variant=w%3A640%3Bh%3A1280%3Bfit%3Ascale'
Normally, you don't need to call sharetribeSdk.util.queryString manually. The following two calls are equal:
sdk.listings.show(
sharetribeSdk.util.queryString({
id: new UUID('d89795b4-4a8d-4969-8a9c-54e95729644d'),
include: ['images'],
'fields.image': ['variants.my-variant'],
'imageVariant.my-variant': sharetribeSdk.util.objectQueryString({
w: 640,
h: 1280,
fit: 'scale'
})
})
)
sdk.listings.show({
id: listingId,
include: ['images'],
'fields.image': ['variants.my-variant'],
'imageVariant.my-variant': sharetribeSdk.util.objectQueryString({
w: 640,
h: 1280,
fit: 'scale'
})
})
You can also combine objects and strings directly in SDK methods by passing an array.
For example, the following call:
sdk.listings.query([
'price=100,1000',
{ pub_gears: ',23' },
'perPage=10'
])
is syntactic sugar for:
sdk.listings.query(
sharetribeSdk.util.queryString([
'price=100,1000',
{ pub_gears: ',23' },
'perPage=10'
])
)
sharetribeSdk.util.queryString takes the query parameters as a string, object, or an array of strings or objects.
Examples:
String query parameter is returned as is:
sharetribeSdk.util.queryString('id=d89795b4-4a8d-4969-8a9c-54e95729644d')
// Returns: 'id=d89795b4-4a8d-4969-8a9c-54e95729644d'
Object is serialized:
sharetribeSdk.util.queryString({page: 10, perPage: 20})
// Returns: 'page=10&perPage=20'
Array of query parameter parts:
sharetribeSdk.util.queryString(['id=d89795b4-4a8d-4969-8a9c-54e95729644d', {page: 10, perPage: 20}])
// Returns: 'id=d89795b4-4a8d-4969-8a9c-54e95729644d&page=10&perPage=20'
Query parameter parts are merged left-to-right:
sharetribeSdk.util.queryString(['page=3', {page: 15, perPage: 20}])
// Returns: 'page=15&perPage=20'