Multiple Representations
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)- 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
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.
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