🔀
Pagination, Filtering & Sorting

Sorting in REST APIs

Multi-Field Sort Support
💡 Sorting, EK LIBRARY mein, BOOKS ko, "AUTHOR NAME SE, PHIR TITLE SE" ARRANGE karne jaisa hai — MULTIPLE CRITERIA, EK KE BAAD EK, APPLY hote hain, JAB, PEHLA CRITERIA, TIE (SAME VALUE) ho.

Sort PARAMETER, TYPICALLY, sort=fieldName,direction FORMAT mein, PASS kiya jaata hai — jaise ?sort=price,desc. MULTIPLE sort PARAMETERS, EK SAATH, PASS kiye ja sakte hain (jaise ?sort=category,asc&sort=price,desc), MULTI-FIELD SORTING ke liye.

Spring Data, AUTOMATICALLY, sort PARAMETER ko, Sort OBJECT mein, PARSE karके, Pageable ke ANDAR, EMBED kar deता hai — REPOSITORY QUERY, AUTOMATICALLY, ORDER BY CLAUSE, GENERATE kar leti hai, MANUAL SQL LIKHE BINA.

// Single field sort:
// GET /api/products?sort=price,desc

// Multi-field sort (category ASC, phir, PRICE DESC):
// GET /api/products?sort=category,asc&sort=price,desc

@GetMapping
public Page<ProductDto> getProducts(Pageable pageable) {
    // pageable.getSort() mein, AUTOMATICALLY, SAARE SORT CRITERIA, PARSE ho chuke hain
    return productRepository.findAll(pageable).map(this::toDto);
}

// Manually, EK Sort object BANANA (jaise DEFAULT ke liye):
Sort sort = Sort.by(Sort.Order.asc("category"), Sort.Order.desc("price"));
🔀
Sorting, EK LIBRARY mein, BOOKS ko, "AUTHOR NAME SE, PHIR TITLE SE" ARRANGE karne jaisa hai — MULTIPLE CRITERIA, EK KE BAAD EK, APPLY hote hain, JAB, PEHLA CRITERIA, TIE (SAME VALUE) ho.
1 / 2
⚡ Quick Recap
  • sort=field,direction format — multiple sort params, MULTI-FIELD sorting ke liye
  • Spring Data, AUTOMATICALLY, Sort ko, Pageable mein, embed kar deता hai
  • Client-controlled sorting mein, ALLOWED fields ki, WHITELIST rakhni chahiye
Is page mein (2 subtopics)

Sort.by(Sort.Order.asc("name").ignoreCase()), STRING FIELDS PAR, CASE-INSENSITIVE, SORTING ENABLE karta hai — WARNA, DATABASE, TYPICALLY, "Apple" ko, "banana" SE, PEHLE, SORT karega (UPPERCASE, ASCII mein, PEHLE AATA hai), JO, USER-EXPECTATION SE, MATCH NAHI karta.

💡Tip: Case-insensitive, sorting, DATABASE-LEVEL, COLLATION SETTINGS PAR bhi, DEPEND karti hai — Sort.Order.ignoreCase(), EK, PORTABLE, WAY hai, ISE, APPLICATION-LEVEL PAR, ENSURE karne ka.

SIMPLE, ENTITY FIELDS SE, ALAG, COMPUTED VALUES (jaise, "totalPrice = quantity * unitPrice") PAR, SORT karna, MUSHKIL hai — TYPICALLY, EK, DATABASE-LEVEL, VIEW, YA, NATIVE QUERY, ki, ZAROORAT, PADТI hai.

  • Simple fields = Sort.by("fieldName") se, DIRECTLY, sort ho sakte hain
  • Computed fields = native queries/views, ZAROORI ho sakte hain