Function queryGenerator

  • Generates a URL query string from an object of parameters

    This function converts an object of key-value pairs into a properly formatted URL query string, handling both simple values and arrays. It automatically handles URL encoding and array notation for query parameters.

    Parameters

    • params: any = {}

      Object containing query parameters

    Returns string

    URL query string (e.g., "?key1=value1&key2=value2&key3[]=value3&key3[]=value4")

    Basic query parameters:

    const params = {
    limit: 10,
    offset: 0,
    search: 'john',
    active: true
    };

    const queryString = queryGenerator(params);
    // Result: "?limit=10&offset=0&search=john&active=true"

    With array parameters:

    const params = {
    tags: ['ai', 'automation', 'support'],
    categories: ['featured', 'popular'],
    exclude: ['archived', 'draft']
    };

    const queryString = queryGenerator(params);
    // Result: "?tags[]=ai&tags[]=automation&tags[]=support&categories[]=featured&categories[]=popular&exclude[]=archived&exclude[]=draft"

    Complex filtering:

    const filterParams = {
    user: 'user-123',
    org: 'org-456',
    status: ['active', 'pending'],
    created_after: '2024-01-01',
    sort_by: 'created_at',
    sort_order: 'desc',
    include_metadata: true
    };

    const queryString = queryGenerator(filterParams);
    // Result: "?user=user-123&org=org-456&status[]=active&status[]=pending&created_after=2024-01-01&sort_by=created_at&sort_order=desc&include_metadata=true"

    Usage in API calls:

    async function fetchUsers(filters: any) {
    const queryString = queryGenerator(filters);
    const response = await fetch(`/api/users${queryString}`);
    return response.json();
    }

    // Usage
    const users = await fetchUsers({
    limit: 20,
    offset: 0,
    search: 'john',
    tags: ['admin', 'verified']
    });