Skip to main content

Using search params (query)

URL search parameters, also known as query parameters, are a way to provide additional information to a request. They are encoded in the query string of a URL in key-value pairs. Search params are typically used in GET requests to filter, sort, or paginate data.

Using request search params

To use search params in your intercepted requests, declare their types in your schema.

schema.ts
import { HttpSchema } from '@zimic/http';

interface User {
id: string;
username: string;
}

type Schema = HttpSchema<{
'/users': {
GET: {
request: {
searchParams: {
q?: string;
page?: number;
size?: number;
orderBy?: 'createdAt:asc' | 'createdAt:desc';
};
};
response: {
200: { body: User[] };
};
};
};
}>;

Then, the request search params will be available in the searchParams property, such as in handler.with(), computed responses, and handler.requests. The search params are typed and validated according to your schema, providing type safety and autocompletion.

const handler = interceptor
.get('/users')
.with({
searchParams: {
q: 'user',
page: 1,
size: 10,
orderBy: 'createdAt:asc',
},
})
.respond((request) => {
console.log(request.searchParams.get('q'));
console.log(request.searchParams.get('page'));
console.log(request.searchParams.get('size'));
console.log(request.searchParams.get('orderBy'));

return {
status: 200,
body: users,
};
})
.times(1);

// Run the application and make requests...

console.log(handler.requests); // 1
console.log(handler.requests[0].searchParams.get('q'));
console.log(handler.requests[0].searchParams.get('page'));
console.log(handler.requests[0].searchParams.get('size'));
console.log(handler.requests[0].searchParams.get('orderBy'));