📄
Validation & Error Handling

ProblemDetail & RFC 7807

Standardized Error Format
💡 RFC 7807, EK "UNIVERSAL COMPLAINT FORM" hai — CHAHE, TUM, KISI BHI COMPANY (API) ko, COMPLAINT (ERROR) BHEJO, FORM ka STRUCTURE (type, title, status, detail), HAMESHA, SAME hota hai — CLIENT ko, HAR API ke liye, ALAG "COMPLAINT FORM" SAMAJHNE ki, ZAROORAT NAHI PADТI.

RFC 7807, EK INDUSTRY-STANDARD, ERROR RESPONSE FORMAT DEFINE karta hai — type (ERROR TYPE ka URI), title (SHORT, HUMAN-READABLE SUMMARY), status (HTTP STATUS CODE), detail (SPECIFIC, HUMAN-READABLE EXPLANATION), instance (SPECIFIC OCCURRENCE ka URI).

Spring Boot 3.x mein, ProblemDetail CLASS, ISI STANDARD ko, NATIVELY, SUPPORT karti hai — HAR API mein, CUSTOM ERROR FORMAT, INVENT karne ke BAJAYE, EK ESTABLISHED, WIDELY-RECOGNIZED STANDARD, FOLLOW kiya jaata hai.

@RestControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(ResourceNotFoundException.class)
    public ProblemDetail handleNotFound(ResourceNotFoundException ex) {
        ProblemDetail problem = ProblemDetail.forStatusAndDetail(
            HttpStatus.NOT_FOUND, ex.getMessage());
        problem.setTitle("Resource Not Found");
        problem.setType(URI.create("https://api.example.com/errors/not-found"));
        return problem;
    }
}

// Response body:
// {
//   "type": "https://api.example.com/errors/not-found",
//   "title": "Resource Not Found",
//   "status": 404,
//   "detail": "Product with id 42 not found",
//   "instance": "/api/products/42"
// }
📄
RFC 7807, EK "UNIVERSAL COMPLAINT FORM" hai — CHAHE, TUM, KISI BHI COMPANY (API) ko, COMPLAINT (ERROR) BHEJO, FORM ka STRUCTURE (type, title, status, detail), HAMESHA, SAME hota hai — CLIENT ko, HAR API ke liye, ALAG "COMPLAINT FORM" SAMAJHNE ki, ZAROORAT NAHI PADТI.
1 / 2
⚡ Quick Recap
  • RFC 7807 = industry-standard, error response format
  • ProblemDetail (Spring Boot 3.x) = NATIVE support, is standard ke liye
  • type, title, status, detail, instance = standard fields
On this page (2 subtopics)

ProblemDetail.setProperty("errorCode", "PROD_404"), STANDARD, RFC 7807 FIELDS ke, UPAR, APPLICATION-SPECIFIC, EXTRA, DATA, ADD karne DETA hai — CLIENT, IN, EXTRA, PROPERTIES ko, USE kar sakta hai, BINA, STANDARD, STRUCTURE, BREAK kiye.

ProblemDetail problem = ProblemDetail.forStatusAndDetail(HttpStatus.BAD_REQUEST, "Invalid input");
problem.setProperty("errorCode", "VALIDATION_001");
problem.setProperty("fieldErrors", fieldErrorsMap);

ProblemDetail, EK, STANDARD, WELL-KNOWN, FORMAT hai — THIRD-PARTY, CLIENTS ke liye, RECOGNIZABLE hai. CUSTOM, ERROR DTO, MORE, CONTROL DETA hai, LEKIN, HAR, API, APNA, ALAG, FORMAT, INVENT karti hai — BADI, PUBLIC APIs ke liye, ProblemDetail, PREFER kiya jaata hai.

  • ProblemDetail = STANDARD, recognizable, third-party friendly
  • Custom DTO = MORE control, LEKIN, non-standard