# HTTP स्टेटस कोड — रेस्ट एपीआई डिज़ाइन

Source: https://www.geekswithgeeks.com/hi/restapi/api-status-codes

> 2xx/3xx/4xx/5xx परिवारों को समझना और सही कोड चुनना।

## पाँच परिवार

**2xx** सफलता (200 OK, 201 Created, 204 No Content)। **3xx** रीडायरेक्शन (301 Moved, 304 Not Modified)। **4xx** क्लाइंट ने गलती की (400 Bad Request, 401/403 ऑथ, 404 Not Found)। **5xx** सर्वर विफल हुआ (500 Internal Error, 503 Unavailable)।

## आम विकल्प

कुछ कोड अधिकांश असली रिस्पॉन्स को संभाल लेते हैं।

```text
200 OK              - GET/PUT/PATCH succeeded
201 Created         - POST created a resource
204 No Content      - DELETE succeeded, no body
400 Bad Request     - malformed input
401 Unauthorized    - missing/invalid credentials
403 Forbidden       - authenticated, not allowed
404 Not Found       - resource doesn't exist
409 Conflict        - state conflict (duplicate, version clash)
422 Unprocessable   - valid JSON, invalid semantics
429 Too Many Requests
500 Internal Server Error
503 Service Unavailable
```

## हमेशा 200 न लौटाएँ

एक आम एंटी-पैटर्न है बॉडी में `{ "success": false }` के साथ `200 OK` लौटाना। स्टेटस कोड को नतीजा बताने दें — क्लाइंट, प्रॉक्सी और मॉनिटरिंग टूल सभी इसे JSON पार्स किए बिना पढ़ लेते हैं।

**Quiz:** एक क्लाइंट वैध JSON भेजता है, पर ऐसे ईमेल से यूज़र बनाने की कोशिश करता है जो पहले से मौजूद है। कौन-सा स्टेटस कोड सबसे उपयुक्त है?

- [ ] 400 Bad Request
- [x] 409 Conflict
- [ ] 500 Internal Server Error

*Answer:* 409 Conflict. 409 Conflict बताता है कि रिक्वेस्ट सही-सही बनी है पर रिसोर्स की मौजूदा स्थिति से टकराती है (डुप्लिकेट)।
