Modify requests and responses
Modify requests and responses
This is for:
DeveloperFor advanced use cases, such as modifying request bodies with custom parameters or logging data to third parties, you may want to modify requests before Headless sends them to the Coveo APIs. You may also want to modify responses before Headless controllers use them. This article explains how to do so.
Modify requests
To modify requests sent to the Coveo Search or usage analytics APIs, use the preprocessRequest
method of the target engine configuration (e.g., search or recommendation, depending on your use case).
The If you have to use |
const engine = buildSearchEngine({
configuration: {
// ...
preprocessRequest: (request, clientOrigin, metadata) => {
if (metadata?.method === 'search' && clientOrigin === 'searchApiFetch') {
const body = JSON.parse(request.body);
// E.g., modify facet requests
// body.facets = [...];
request.body = JSON.stringify(body);
}
if (clientOrigin === 'analyticsFetch') {
// E.g., send data to a third party
}
return request;
},
},
});
Initialize the function with its parameters:
|
Modify responses
If you’re using the search engine, you can leverage the search configuration options to modify Search API responses before Headless controllers use them.
Use the preprocessSearchResponseMiddleware
, preprocessFacetSearchMiddleware
, or preprocessQuerySuggestResponseMiddleware
method, depending on the target endpoint.
const engine = buildSearchEngine({
configuration: {
// ...
search: {
preprocessSearchResponseMiddleware: (response) => {
response.body.results.forEach((result) => {
// E.g., modify the result object
return result;
});
return response;
},
preprocessFacetSearchResponseMiddleware: (response) => response,
preprocessQuerySuggestResponseMiddleware: (response) => response,
},
},
});