Exercise 19: Fetch with Request Body Validation

Problem Statement

Create a function `fetchWithValidation(url, data, validator)` that validates request body before sending. Example: fetchWithValidation(url, data, (d) => d.name)

Sample Output:

await fetchWithValidation(url, data, (d) => d.name)
// Validates data before sending

Solution

const fetchWithValidation = async (url, data, validator) => {
  if (!validator(data)) throw new Error("Validation failed");
  return fetch(url, {
    method: "POST",
    headers: {"Content-Type": "application/json"},
    body: JSON.stringify(data)
  });
};

Explanation

Overall Goal:

  • Request body ko validate karna before sending.

Real world:

  • Input validation: data validation.
  • API contracts: request validation.