Open In App

Difference Between req.query and req.params in Express

Last Updated : 15 Mar, 2025
Comments
Improve
Suggest changes
Like Article
Like
Report

In Express, req.query and req.params are used to access different types of parameters in a request. 'req.query' retrieves query string parameters from the URL (e.g., '/search?name=GFG' → 'req.query.name' is '"GFG"'), while 'req.params' retrieves route parameters defined in the URL path (e.g., '/users/:id' → '/users/123' → 'req.params.id' is '"123"').

req.query: Dealing with URL Stuff:

  • Where the Data Comes From: It's from the extra bits attached to the end of a URL, like when you fill out a form or put something in the search bar.
  • When to Use It: Great for handling info from URLs, especially when things like search terms are involved.
JavaScript
app.get('/search', (req, res) => {
    const searchTerm = req.query.q;
// Do something with the search term
});

req.params: Figuring Out Route Things:

  • Where the Data Comes From: It grabs values from the changing parts in the URL, those bits with colons that can be different each time.
  • When to Use It: Handy when you want your web page to work with different values in the same kind of URL setup.
JavaScript
app.get('/user/:id', (req, res) => {
const userId = req.params.id;
// Fetch info based on the user ID
});

Difference between req.query and req.params in Express:

Understanding the difference between req.query and req.params is key to managing route parameters in Express.js.

Aspect

req.query

req.params

Source of Data

Extra bits at the end of a URL (e.g., form inputs, search bar)

Changing parts in the URL marked by colons

Example URL

'/search?q=example'

'/users/:id'

Usage

Ideal for handling URL parameters, especially with search terms

Useful when dealing with dynamic values within a consistent URL structure

Express.js Example

'javascript app.get('/search', (req, res) => { const searchTerm = req.query.q; // Process search term });

'javascript app.get('/users/:id', (req, res) => { const userId = req.params.id; // Fetch user details based on dynamic user ID });

Scenario Example

Handling a search feature on a website

Accessing user-specific information on a page

Steps to Setup Backend with Node.js and Express:

Step 1: Creating express app:

npm init -y

Step 2: Installing the required packages

npm install express

Example: Create a file named server.js and add the following code:

JavaScript
const express = require('express');
const app = express();
const PORT = 3000;

// Route using req.query
app.get('/search', (req, res) => {
    const searchTerm = req.query.q || 'No search term provided';
    res.send(`Search Term: ${searchTerm}`);
});

// Route using req.params
app.get('/users/:id', (req, res) => {
    const userId = req.params.id || 'No user ID provided';
    res.send(`User ID: ${userId}`);
});

// Start the server
app.listen(PORT, () => {
    console.log(`Server is running at http://localhost:${PORT}`);
});

Steps to run the App:

node server.js

Ouput for req.params:

Screenshot-2567-01-15-at-001008
Response when we send params

Ouput for req.query:

Screenshot-2567-01-15-at-000714
Response when we send query params

Conclusion:

To keep it simple, req.query deals with data from the end of a URL, while req.params grabs values from dynamic parts of the URL. Whether you're dealing with a search form or creating web pages with changing parts, knowing when to use each makes Express.js a lot less confusing.


Next Article

Similar Reads