Γρήγορη αναφορά

Οδηγός RESTful API (Cheat Sheet)

Γρήγορος οδηγός αναφοράς για RESTful APIs: σημασιολογία μεθόδων HTTP, κωδικοί κατάστασης, δομές σφαλμάτων JSON, κεφαλίδες και ταυτοδυναμία.

· Δημοσιεύτηκε

Το REST (Representational State Transfer) είναι ένα αρχιτεκτονικό στυλ για τη σχεδίαση δικτυωμένων υπηρεσιών Web API μέσω HTTP.

Μέθοδοι HTTP & Σημασιολογία

Μέθοδος Στοχευμένη ενέργεια Ασφαλής Ταυτοδύναμη
GET Ανάκτηση αναπαράστασης πόρου Ναι Ναι
POST Δημιουργία νέου θυγατρικού πόρου Όχι Όχι
PUT Αντικατάσταση ολόκληρης της αναπαράστασης πόρου Όχι Ναι
PATCH Μερική ενημέρωση ιδιοτήτων πόρου Όχι Όχι
DELETE Διαγραφή πόρου Όχι Ναι
HEAD Ανάκτηση κεφαλίδων χωρίς σώμα απόκρισης Ναι Ναι
OPTIONS Ερώτηση υποστηριζόμενων μεθόδων HTTP για το endpoint Ναι Ναι

Συνήθεις κωδικοί κατάστασης HTTP

Επιτυχία (2xx)

  • 200 OK: Το αίτημα πέτυχε (το σώμα περιέχει την αναπαράσταση).
  • 201 Created: Ο πόρος δημιουργήθηκε επιτυχώς (η κεφαλίδα Location υποδεικνύει το URI).
  • 202 Accepted: Το αίτημα έγινε δεκτό για ασύγχρονη επεξεργασία.
  • 204 No Content: Η ενέργεια πέτυχε, δεν επιστρέφεται σώμα απόκρισης (σύνηθες στο DELETE).

Σφάλματα πελάτη (4xx)

  • 400 Bad Request: Εσφαλμένη σύνταξη, μη έγκυρες παράμετροι ή αποτυχία επικύρωσης.
  • 401 Unauthorized: Απουσιάζει ή είναι άκυρη η πιστοποίηση ταυτότητας.
  • 403 Forbidden: Ο πιστοποιημένος χρήστης δεν έχει άδεια πρόσβασης στον πόρο.
  • 404 Not Found: Το URI του πόρου δεν υπάρχει.
  • 409 Conflict: Το αίτημα έρχεται σε σύγκρουση με την τρέχουσα κατάσταση πόρου (π.χ. διπλότυπο κλειδί).
  • 422 Unprocessable Entity: Ορθώς δομημένο αίτημα που απέτυχε στη σημασιολογική επικύρωση.
  • 429 Too Many Requests: Υπέρβαση ορίου ρυθμού αιτημάτων (Rate Limit).

Σφάλματα διακομιστή (5xx)

  • 500 Internal Server Error: Γενικό μη διαχειρισμένο σφάλμα διακομιστή.
  • 502 Bad Gateway: Ο ανάντη διακομιστής επέστρεψε μη έγκυρη απόκριση.
  • 503 Service Unavailable: Ο διακομιστής είναι υπερφορτωμένος ή υπό συντήρηση.

Τυπικό περίβλημα σφάλματος JSON

{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "The email address provided is already registered.",
    "details": [
      {
        "field": "email",
        "issue": "unique_constraint_violated"
      }
    ]
  }
}

Αναφορές

Σχετικά θέματα