🔄
Building REST Controllers

Multiple Representations

JSON, XML, Content Negotiation
💡 Multiple representations, EK RESTAURANT MENU KA, DIFFERENT LANGUAGES mein, TRANSLATION jaisa hai — SAME DISH (RESOURCE), DIFFERENT FORMATS (JSON, XML) mein, SERVE ki ja sakti hai, CUSTOMER ki PREFERENCE (Accept HEADER) ke HISAAB SE.

EK HI RESOURCE, MULTIPLE FORMATS mein, REPRESENT ho sakta hai — DEFAULT mein, Spring Boot, JSON RETURN karta hai (Jackson library SE). AGAR jackson-dataformat-xml DEPENDENCY, ADD ki jaaye, SAME CONTROLLER, CLIENT ke Accept HEADER ke BASIS PAR, XML bhi, RETURN kar sakta hai — CODE mein, KOI CHANGE NAHI CHAHIYE.

PRACTICALLY, MODERN, PUBLIC-FACING REST APIs, LAGBHAG HAMESHA, SIRF JSON SUPPORT karte hain — XML SUPPORT, TYPICALLY, LEGACY SYSTEMS ke SAATH, INTEGRATION ke liye, ZAROORI PADТA hai.

<!-- XML support enable karne ke liye: -->
<dependency>
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

// Controller code, BILKUL SAME rehta hai:
@GetMapping("/{id}")
public Product getProduct(@PathVariable Long id) { return productService.findById(id); }

// Client ke Accept header ke basis par:
// Accept: application/json → JSON response
// Accept: application/xml  → XML response (agar dependency added hai)
🔄
Multiple representations, EK RESTAURANT MENU KA, DIFFERENT LANGUAGES mein, TRANSLATION jaisa hai — SAME DISH (RESOURCE), DIFFERENT FORMATS (JSON, XML) mein, SERVE ki ja sakti hai, CUSTOMER ki PREFERENCE (Accept HEADER) ke HISAAB SE.
1 / 2
⚡ झट से Recap
  • Default = JSON (Jackson library se, automatically)
  • XML support = sirf ek dependency add karne se, koi code change nahi
  • Modern public APIs = LAGBHAG hamesha, sirf JSON
इस page में (2 subtopics)

Client, Accept HEADER mein, MULTIPLE, ACCEPTABLE FORMATS, PRIORITY ORDER mein, LIST kar sakta hai (jaise, Accept: application/xml;q=0.9, application/json;q=1.0) — Spring, HIGHEST, q-VALUE (QUALITY) wale, FORMAT ko, CHOOSE karta hai, JISE, SERVER, SUPPORT karta hai.

💡Tip: AGAR, Accept HEADER, MISSING hai, Spring, TYPICALLY, DEFAULT (JSON) RETURN kar deta hai — MOST, BROWSERS/CLIENTS, DEFAULT mein, */* (KUCH BHI ACCEPT) BHEJTE hain.

MOST, MODERN, API-only, PROJECTS, SIRF, JSON SUPPORT karte hain — MULTIPLE, FORMATS (JSON + XML), TYPICALLY, SIRF, TAB, ZAROORI hote hain, JAB, EXISTING, LEGACY, CLIENTS/SYSTEMS, XML EXPECT karte hain (jaise, ENTERPRISE, B2B, INTEGRATIONS).

  • JSON-only = MOST modern APIs (SIMPLER, LESS overhead)
  • JSON + XML = legacy/enterprise integrations, JAHA XML, ZAROORI hai