Get your own Node server
const express = require('express');
const app = express();
const port = 8080;

// Basic route with query parameters
app.get('/search', (req, res) => {
  const { q, category, limit } = req.query;
  
  res.send(`
    <h2>Search Results</h2>
    <p>Query: ${q || 'Not specified'}</p>
    <p>Category: ${category || 'All categories'}</p>
    <p>Limit: ${limit || 'Default'}</p>
  `);
});

// Using query parameters for pagination
app.get('/products', (req, res) => {
  const page = parseInt(req.query.page) || 1;
  const pageSize = parseInt(req.query.pageSize) || 10;
  
  // Mock product data
  const products = [];
  for (let i = 1; i <= pageSize; i++) {
    const productId = (page - 1) * pageSize + i;
    products.push(`Product ${productId}`);
  }
  
  res.send(`
    <h2>Product Listing</h2>
    <p>Page: ${page}</p>
    <p>Page Size: ${pageSize}</p>
    <ul>
      ${products.map(product => `<li>${product}</li>`).join('')}
    </ul>
    <p>
      <a href="/products?page=${page > 1 ? page - 1 : 1}&pageSize=${pageSize}">Previous
      |
      <a href="/products?page=${page + 1}&pageSize=${pageSize}">Next
    </p>
  `);
});

// Optional filtering using query parameters
app.get('/filter', (req, res) => {
  // Convert query parameters to an array of key-value pairs
  const filters = Object.entries(req.query).map(([key, value]) => {
    return `${key}: ${value}`;
  });
  
  if (filters.length === 0) {
    res.send('No filters applied. Try adding query parameters like ?color=red&size=large');
  } else {
    res.send(`
      <h2>Applied Filters</h2>
      <ul>
        ${filters.map(filter => `<li>${filter}</li>`).join('')}
      </ul>
    `);
  }
});

app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`);
});

              
http://localhost:8080