Request Parameters
@RequestParam
@GetMapping("/products")
public ResponseEntity<List<Product>> getProducts(
@RequestParam String category,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "20") int size,
@RequestParam(required = false) BigDecimal minPrice) {
// category is required
// page defaults to 0
// minPrice is optional (can be null)
return ResponseEntity.ok(productService.filter(category, minPrice, page, size));
}
Parameter Binding
| Source | Annotation | Example URL |
|---|---|---|
| Query parameter | @RequestParam |
/products?category=phone |
| Path variable | @PathVariable |
/products/123 |
| Request body | @RequestBody |
POST body JSON |
| Header | @RequestHeader |
Authorization: Bearer ... |
| Cookie | @CookieValue |
session=abc123 |
Required vs Optional
// Required (default)
@RequestParam String name // 400 if missing
// Optional with default
@RequestParam(defaultValue = "10") int size
// Optional (nullable)
@RequestParam(required = false) String search
Best Practices
Key Principles
- Follow SOLID principles
- Write clean, readable code
- Test thoroughly
- Document decisions
- Monitor in production
Implementation
- Start simple, refactor as needed
- Use established patterns
- Consider trade-offs
- Review with peers
Continuous Improvement
- Learn from incidents
- Update documentation
- Share knowledge
- Mentor others
Key Points
- Understanding Request Parameters is essential for production systems
- Always consider scalability and maintainability
- Test thoroughly before deploying to production
- Monitor performance and set up alerting
Common Patterns
- Validation: Always validate input at the boundary
- Error Handling: Use structured error responses
- Logging: Log key events for debugging
- Testing: Unit, integration, and load tests
- Documentation: Keep docs updated with code changes
Practice Problems
Design and implement a solution for Request Parameters in a backend system. Consider scalability, error handling, and production readiness.
Solution
// Request Parameters implementation
// Key aspects: validation, error handling, logging, testing
public class RequestParameters {
// Production-ready implementation
}Identify and handle edge cases for Request Parameters. What happens under high load, with invalid input, or during failures?
Solution
// Edge case handling:
// 1. Null/empty input -> validation
// 2. High load -> rate limiting, queuing
// 3. Failures -> retries, circuit breaker
// 4. Concurrent access -> locks, idempotencyWrite a testing strategy for Request Parameters. Include unit tests, integration tests, and performance tests.
Solution
// Test plan:
// - Unit: 80% coverage target
// - Integration: API contracts
// - Performance: latency, throughput
// - Chaos: failure injectionQuiz
1. What happens when a required @RequestParam is missing?
2. How do you make a @RequestParam optional?
3. What is the primary purpose of Request Parameters?
4. What is a common mistake when implementing Request Parameters?
Flashcards
Question
What happens with missing required @RequestParam?
Click to reveal answer
Answer
Returns 400 Bad Request
Question
How to make @RequestParam optional?
Click to reveal answer
Answer
required = false or defaultValue
Question
What is Request Parameters?
Click to reveal answer
Answer
Request Parameters is a key concept in backend development.
Question
When to use Request Parameters?
Click to reveal answer
Answer
Use Request Parameters when building production systems that require reliability, scalability, and maintainability.
Question
Request Parameters best practices
Click to reveal answer
Answer
Follow SOLID principles, write clean code, test thoroughly, document decisions, and monitor in production.
Revision Notes
Key Takeaways
- 1.@RequestParam extracts query parameters
- 2.Required by default, use required=false for optional
- 3.defaultValue provides fallback values
- 4.@RequestHeader, @CookieValue for headers/cookies
Interview Tips
- •Know parameter binding annotations
- •Handle required vs optional parameters
Cheat Sheet
Request Parameters
- @RequestParam: Query params (?key=value)
- @PathVariable: Path segments (/products/{id})
- @RequestBody: JSON body
- @RequestHeader: HTTP headers
- @CookieValue: Cookies
- Required: default true, required=false for optional