Request Handling & Validation
          
      
    
    
          
  
        
          
              
      | 
    
        Accessing data from various parts of the request object. handler: (request, h) => {
    const query = request.query;      // Query parameters
    const params = request.params;    // Route parameters
    const payload = request.payload;  // Request body
    console.log('Query:', query);
    console.log('Params:', params);
    console.log('Payload:', payload);
    return 'Data received!';
}
 | 
          
         
 
          
  
        
          
              
      | 
    
        Using Joi for request payload validation. const Joi = require('joi');
server.route({
    method: 'POST',
    path: '/user',
    handler: (request, h) => {
        return 'User created!';
    },
    options: {
        validate: {
            payload: Joi.object({
                username: Joi.string().alphanum().min(3).max(30).required(),
                password: Joi.string().pattern(new RegExp('^[a-zA-Z0-9]{3,30}$')).required(),
                email: Joi.string().email().required()
            })
        }
    }
});
 | 
              
      | 
    
        Explanation: 
Joi.object({...}): Defines the structure and validation rules for the payload.username: Must be an alphanumeric string, between 3 and 30 characters, and is required.password:  Must be an alphanumeric string, between 3 and 30 characters, and is required.email: Must be a valid email address and is required. | 
          
         
 
          
  
        
          
              
      |  | 
    
        Validates query parameters. | 
              
      | 
    
        params: Joi.object({...})
 | 
    
        Validates route parameters. | 
              
      |  | 
    
        Defines what happens when validation fails (e.g., ‘log’, ‘error’). |